javascript - 在多维数组上使用 javascript forEach 和拼接

标签 javascript arrays splice

我正在尝试遍历一些如下所示的数据:

[0]['fields']['status']['name'] = 'In progress'
[1]['fields']['status']['name'] = 'In progress'
[2]['fields']['status']['name'] = 'In review'
[3]['fields']['status']['name'] = 'In progress'
[4]['fields']['status']['name'] = 'In review'

我正在使用以下 foreach 循环来拼接所有无用的索引,在本例中是所有索引。

issues.forEach(function (item, index) {
   if (issues[index]['fields']['status']['name'] !== "Done") {
       issues.splice(index, 1);
   }
});

如果我稍后遍历数组,我可以输出“进行中”和“审查中”,这很奇怪,因为它们应该被取消设置。我认为发生这种情况是因为我在使用数组时对其进行了操作。谁能解释一下出了什么问题以及如何避免这种情况。

最佳答案

只需从带索引的末尾开始循环。

这可以防止看不见的索引并将索引保​​留在它所属的位置。

var index = issues.length;

while (index--) {
    if (issues[index].fields.status.name !== "Done") {
        issues.splice(index, 1);
    }
}

关于javascript - 在多维数组上使用 javascript forEach 和拼接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59931798/

相关文章:

java - 与等效的 Java 代码相比,C# BitConverter 输出错误的 double 值

javascript - NodeJS buffer.slice() 不是一个函数?

javascript - 显示到页面后如何编辑和删除json

javascript - 将 div 保存为 PDF 时未定义 jsPDF

javascript - dc.js - 隐藏 div 容器,直到创建 svg

javascript - 谷歌可视化运动图表未定义?

java - a[2] = a[a.length] 删除数组 a 中的 2 个

字符数组到二进制数组不起作用

udp - Linux splice() 返回 EINVAL ("Invalid argument")

javascript - 将用户选择的值从下拉菜单传递到 d3.csv