javascript - 迭代数组并删除一些实体,同时不留下未定义的情况

标签 javascript underscore.js

我想删除数组中的特定位置,并减少数组的长度,以便删除后它不包含未定义的位置。我还在数组上进行迭代。

我可以想象一个暴力解决方案,它会在数组上迭代两次,但我只是想检查一下是否有更简单的东西。

这是我得到的:

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

相关文章:

javascript - 如何从网站发送电子邮件?

javascript - CoffeeScript:使用 lodash(_ .js) 将 List 的 List 合并为单个 List

javascript - 用下划线分组和求和

javascript - 在主干/下划线模板中使用循环

javascript - 动态创建时不出现 Ondragstart 属性

javascript - 避免 $watch() 循环导致 $digest 已在进行中错误

javascript - 我试图在 jsx-react 中动态添加图像,但它不会显示

javascript - D3 单选和函数调用

javascript - 为什么更喜欢 defaults() 而不是 Javascript 原型(prototype)设计?

javascript - 防止模板循环内的标签多次输出?