在循环中去删除,会出现应被删除的数据残留没有被删除成功的情况 list 为一数组
data.forEach(element => {
let m = list.findIndex((item: any) =>
item.name === element.name
)
list.splice(m, 1)
});
原因在于splice 会改变原本数组的长度 ,也就是变角标所指向的内容。原来符合条件的index, 后面splice之后被改变了,所以没有删掉。
data.forEach(element => {
let m = list.findIndex((item: any) =>
item.name === element.name
)
while (list.indexOf(list[m]) !== -1) {
list.splice(m, 1)
}
});
在vue里面虽然splice是响应式的,但是不建议与forEach连用,一般来讲forEach无法中断遍历,当需要过滤数据的时候还是采用filter比较好,需要修饰数组(不删减数组)的时候采用map遍历比较好。