我想删除数组中的特定位置,并减少数组的长度,以便删除后它不包含未定义的位置。我还在数组上进行迭代。
我可以想象一个暴力解决方案,它会在数组上迭代两次,但我只是想检查一下是否有更简单的东西。
这是我得到的:
_.each(foo._events, function (eventGroup) {
var keys = _.keys(eventGroup);
_.each(keys, function (key) {
if (eventGroup[key].ctx.isClosed) {
delete eventGroup[key];
console.log("Deleting closed");
}
});
});
但这会在槽中留下一个未定义的元素。
我正在探索一些选项:How do I remove a particular element from an array in JavaScript?但我怀疑在迭代数组时修改数组的长度可能会导致奇怪的行为?但也许这没问题,因为我是通过 key 访问的——即使 key 看起来是“0”、“1”、“2”。
最佳答案
我不确定我是否完全理解,但也许 filter
就是您要找的?
foo._events = _.filter(foo._events, function (eventGroup) {
return _.every(_.values(eventGroup), function(v) {
return !v.ctx.isClosed
})
})
关于javascript - 迭代数组并删除一些实体,同时不留下未定义的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23636670/