如何从Javascript数组中完全删除元素
我使用这段代码来迭代数组,并删除不包含itemsToPost的元素如何从Javascript数组中完全删除元素,javascript,arrays,Javascript,Arrays,我使用这段代码来迭代数组,并删除不包含itemsToPost的元素 rssFeeds.forEach(function(feed, index, array){ if(feed.itemsToPost.length == 0){ delete rssFeeds[index] } }); 但是,假设删除了所有元素,我从中收到的数组如下所示: [ , ] 当我用Lodash的方法测试数组是否为空时 console.log(_.isEmpty(array)))
rssFeeds.forEach(function(feed, index, array){
if(feed.itemsToPost.length == 0){
delete rssFeeds[index]
}
});
但是,假设删除了所有元素,我从中收到的数组如下所示:
[ , ]
当我用Lodash的方法测试数组是否为空时
console.log(_.isEmpty(array))) // returns 'false'
如何完全删除这些元素,使数组真正为空
更新:
我发现了一个使用Array.prototype.filter的解决方案,如:
function hasNewItems(array) {
return array.itemsToPost.length > 0;
}
var newArray = rssFeeds.filter(hasNewItems)
console.log(newArray); // returns []
它不一定要删除数组,但它具有所需的效果。
delete
不是从数组中删除元素的正确方法,您应该使用rssFeeds.splice(index,1)
。看看array.prototype.filter
这通常是正确的,但会导致循环中的失败,如问题中所述。