2016-09-07 110 views
0
對象列表中的空值

我目前從陣列中使用Object.keys和映射這樣的過濾出空值:過濾掉在JavaScript

// 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

我認爲更好的辦法是詳見H這可能會影響其他庫。 – Sirko

回答

1

IE10不支持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(NOT NULL)來過濾元素,你可能所有降低:

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);

1
var length = 0 

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

在這種情況下,for-loop是你mapif-condition是你filter

+0

這正是我需要做的。謝謝! –