参考
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)