
错误示范
splice直接删除元素,数组会变短,循环会丢失删除元素的后一个元素
let arr = ['a', 'b', 'c', 'a', 'a', 'd']
arr.forEach((item, index) => {
if (item === 'a') {
arr.splice(index, 1)
}
})
// arr = ['b', 'c', 'a', 'd']
不错误但不建议
let arr = ['a', 'b', 'c', 'a', 'a', 'd']
arr.forEach((item, index) => {
if (item === 'a') {
delete arr[index]
}
})
// arr = [, 'b', 'c', , , 'd']
arr = arr.filter(function (val) {
return val
})
// arr = ['b', 'c', 'd']
现在回看之前写的代码,有点好笑,以下是新方法
正确方法之一
let arr = ['a', 'b', 'c', 'a', 'a', 'd']
console.log(arr.filter(e => e!='a'))
可能当时是为了做Object对象删除之后过滤的文章,做成了数组?不记得了,理解不了当时为什么非要delete再排除。
JS数组元素删除技巧
2198

被折叠的 条评论
为什么被折叠?



