在JavaScript中过滤掉对象列表的空值

时间:2016-09-07 13:54:15

标签: javascript jquery

我目前正在使用Object.keys过滤掉数组中的空值,并按照以下方式映射:

// The ultimate goal is to get the length of my list where !== null
var length = Object.keys(myList).map(x => myList[x]).filter(x => x !== null).length;

我需要找到另一种方法,因为在IE11中我遇到了问题。它以某种方式干扰了第三方控制的功能。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

var length = 0

for (var i = 0; i < myList.length; i++) {
  if (myList[i] !== null) { 
     length++; 
  } 
}

在这种情况下,for-loopmapif-conditionfilter

答案 1 :(得分:1)

IE中不支持Arrow functions。所以,代码的等价物是:

var myList = {'1': '1', '2': '2', '3': '3', '4': null};
var length =   Object.keys(myList).map(function (x) {
  return myList[x]
}).filter(function (x) {
  return x !== null;
}).length;

console.log(length);

因为Object.keys(myList)的输出是一个数组,你只需按其vaues(非null)过滤元素,你可以将all减少到:

var myList = {'1': '11', '2': '22', '3': '33', '4': null};
var length =   Object.keys(myList).filter(function (x) {
  return myList[x] !== null;
}).length;

console.log(length);