我正在尝试遍历看起来像这样的一些数据:
[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);
}
}
replace
循环使用while
forEach方法,因为当您使用splice
时,这将修改issues
数组inplace
。
let arr = [1,2,3,4]
arr.forEach((item, index) => {
arr.splice(index, 1);
});
console.log(arr);
解决方案
let i = 0; while(i < issues.length){ if (issues[i]['fields']['status']['name'] !== "Done") { issues.splice(i, 1); } else i++; }