我在哪里删除forEach循环/函数中的null元素?

时间:2016-01-09 14:26:37

标签: javascript

如果我的数据看起来像[Object, null, Object, Object]并且我正在使用下面显示的函数,我想删除数组的null元素。现在我尝试使用if (item) {}忽略所有null元素。 但我想完全删除这个元素,以获得[Object, Object, Object]

function addId(obj) {
    if (Object.prototype.toString.call(obj).indexOf('Array') >= 0) {
        obj.forEach(function(item) {
            if (item) {
                item.id = item.id || Random.id();
                addId(item);
            }
        });
    }
    else if (typeof obj == 'object') {
        Object.keys(obj).forEach(function(key) {
            addId(obj[key]);
        });
    }
    return obj;
}

3 个答案:

答案 0 :(得分:2)

您可以filter null元素。

arr.filter(function(item){ return item !== null }).forEach(function(item) {
    item.id = item.id || Random.id();
    addId(item);
});

甚至更简单,obj.filter(function(item){ return item }),但它基本上只会过滤掉所有 falsey 元素,包括null

答案 1 :(得分:2)

试试这个 - 简单而优雅

newarr = arr.filter(function(item, pos) {
    return !(item === null)
})

答案 2 :(得分:0)

您应该使用filter尝试这个简单的解决方案来删除null值:

var array = [1, null, 3, null];
array = array.filter(function(n){ return n != undefined }); 

array // [1, 3]