我有对象,我遍历,并试图从列表中删除特定对象的数组。
运行阵列上予移除第一索引和迭代只有2次而不是3次。
const data = [{
id: 1,
name: 'test1'
},
{
id: 2,
name: 'test2'
},
{
id: 3,
name: 'test1'
}]
data.forEach((item: any, index:any) => {
if (item.name === 'test1') {
data.splice(index, 1); // Remove one record then and it stops early
}
});
有没有人帮我,迭代迭代过程中完全如果去掉什么?
你从数组在遍历数组删除索引。所以,你正在处理的阵列被改变,在每次迭代。
既然你从数组中删除索引0处的长度为2现在所以它停止在第二次迭代。
除了使用forEach
使用filter
(见Stackblitz例如),不发生变异原数组并返回新数组,然后你可以重新分配。
let data = [{
id: 1,
name: 'test1'
},
{
id: 2,
name: 'test2'
},
{
id: 3,
name: 'test1'
}];
console.log('BEFORE', data); // Original data
data = data.filter((item: any, index: any) => item.name !== 'test1');
console.log('AFTER', data); // Only `test2` remains now