我目前正在使用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中我遇到了问题。它以某种方式干扰了第三方控制的功能。
有什么想法吗?
答案 0 :(得分:1)
var length = 0
for (var i = 0; i < myList.length; i++) {
if (myList[i] !== null) {
length++;
}
}
在这种情况下,for-loop
是map
而if-condition
是filter
。
答案 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);