如果我的数据看起来像[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;
}
答案 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]