为什么数组返回空白

时间:2018-07-11 09:41:47

标签: javascript

应该返回9-12,1-4,5-8,9-11,但是返回9-12,1-4,5-8,9-11,,,,

var arr = [{
    Sanju: '9-12'
  }, {
    Sanju: '1-4'
  }, {
    Sanju: '5-8'
  }, {
    Sanju: '9-11'
  },
  {
    IRONMAN: '9-12'
  }, {
    VIVEGAM: '1-4'
  }, {
    VIVEGAM: '5-8'
  }, {
    VIVEGAM: '9-11'
  }
];

var b = Array.from(arr, x => x.Sanju);
document.write(b);
document.write(Array.isArray(b));

2 个答案:

答案 0 :(得分:4)

由于并非arr中的所有值都包含Sanju,所以当您返回x.Sanju时,某些值将为您带来不确定的定义。您可以使用过滤器删除类似的值

var arr = [{Sanju: '9-12'},{Sanju: '1-4'}, {Sanju: '5-8'},{Sanju: '9-11'},
		{IRONMAN: '9-12'},{VIVEGAM: '1-4'}, {VIVEGAM: '5-8'},{VIVEGAM: '9-11'}
];
	
	var b= Array.from(arr, x => x.Sanju).filter(Boolean);
    document.write(b);
    document.write(Array.isArray(b));

查看Removing undefined values from Array,了解有关.filter(Boolean)工作方式的更多信息

答案 1 :(得分:4)

它应该返回9-12,1-4,5-8,9-11,但是返回9-12,1-4,5-8,9-11 ,,,

Coz,某些对象上没有Sanju属性。您应该先过滤数组,然后其余的

var arr = [{
    Sanju: '9-12'
  }, {
    Sanju: '1-4'
  }, {
    Sanju: '5-8'
  }, {
    Sanju: '9-11'
  },
  {
    IRONMAN: '9-12'
  }, {
    VIVEGAM: '1-4'
  }, {
    VIVEGAM: '5-8'
  }, {
    VIVEGAM: '9-11'
  }
];

var o = arr.filter(i=> i.Sanju);

var b = Array.from(o, x => x.Sanju);
document.write(b);
 
document.write(Array.isArray(b));

相关问题