概述
使用forEach遍历数组,删除不符合条件的元素时,发现有的元素没有删掉,原因是forEach不会重置索引
例如下面数组,id=1 / type=pdf的元素需要删除掉,会发现删除第0项后,第1项没有删除成功,因为第0项被删除后,第一项补位到了第0项的位置,但是索引没有重新计算,索引自增1,接着循环了数组第1项,导致补位上去的第0项没有访问到
var arr = [
{
id: 0,
type: 'image'
},
{
id: 1,
type: 'pdf'
},
{
id: 2,
type: 'xlsx'
},
{
id: 3,
type: 'mp3'
}
]
arr.forEach((item, index) => {
if (item.id === 0) {
arr.splice(index, 1)
}
if (item.type === 'pdf') {
arr.splice(index, 1)
}
})
解决方法:过滤数组,当然首选filter
了。。
arr = arr.filter((item) => {
return item.id !== 0 && item.type !== 'pdf'
})
最后
以上就是殷勤长颈鹿为你收集整理的js-使用forEach过滤数组的一个坑的全部内容,希望文章能够帮你解决js-使用forEach过滤数组的一个坑所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复