js 数组遍历时删除元素

JavaScript030

js 数组遍历时删除元素,第1张

参考

js在循环遍历数组中删除指定元素踩坑( foreach.. for.. for..in.. )

JS-数组遍历中删除元素的方法优化

第一次forEach循环,arr是[1, 1, 2],index是0,item是1,if条件成立, 使用splice删除了item1,arr变成[1, 2]

第二次forEach循环,arr是[1, 2],index是1,item是2,if条件不成立,使用splice无法删除了第二个重复的1

出现问题的原因就是splice删除当前数据时,导致后面的数据前移,最直接的解决办法就是i也跟着前移即可。

注意,此时使用For in遍历是不行的

原因是迭代器的i,每次都重新取值了,i--失效。

测试结果说明可以安全删除

删除步骤如下:

ar arr = [ 1, 2, 3, 4, 5 ]

//原始数组

alert("原始数组:" + arr)// 1,2,3,4,5

//删除并且返回第一个元素

注:重复以上步骤即可

一、JavaScript

简称为js,一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型;

它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能;

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。

二、js表达式:

表达式是指将常量、变量、函数、运算符和括号连接而成的式子;

根据运算结果的不同,表达式可分为算术表达式、字符表达式、和逻辑表达式。

var arr = ['a','b','c','d','e','f','g','h','i']

for(let i=0i<arr.lengthi++){

// arr.splice(i,1)//(循环删除所有元素)i是索引,1是长度,null的意思是该元素替换为null

if(i==2){

arr.splice(i,1)//删除第2个元素

arr.splice(i+2,1,null)//把第4个位置的元素替换为null

arr.splice(i+3,2,['w','z'])//把第5和第6位置的元素替换为w和z

}

}

删除对象:

let list = that.navList[1].orderList

let index = list.findIndex(val =>val.time === item.time)

index !== -1 &&list.splice(index, 1)