js splice坑_splice遇到的坑 - sunshinewyf的个人页面 - OSCHINA - 中文开源技术交流社区...

splice是js中一个很强大的函数,其定义如下:

splice()的主要用途是向数组的中部插入项,但是使用这种方法的方式又如下三种:

1:删除:可以删除任意数量的项,只需要指定2个参数:要删除的第一项的位置和要删除的项数,例如:splice(0,2)会删除数组中的前两项

2:插入:可以向指定位置插入任意数量的项,只需提供三个参数:起始位置,0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,甚至更多的项,例如:

splice(2,0,"red",","green")会从当前数组的位置2开始插入字符串“red"和"green".

3:替换:可以向指定位置插入任意数量的项,同时删除任意数量的项,只需指定三个参数:起始位置,要删除的项数和要插入的任意数量的项。插入的项数不必须与删除的项数相等。例如:splice(2,1,"red","green")会删除当前数组位置2的项,然后再从位置2开始插入字符串"red"和"green"。

虽然知道splice的一些基本用法的定义,但是最后在使用复杂数组的情况的时候,逻辑上还是犯了错误,比如在for循环中使用对数组的splice操作的时候:

如果想删除一个数组中的奇数项的时候,我选择了这样做:

var arr = ['red','yellow','blue','green','black','white','purple'];

for(var i=0;i

if(i%2==0){

arr.splice(i,1);

}

}

for(var j=0;j

console.log(arr[j]);

}

但是最后并没有按我预期的输出,只是输出了yellow,blue,black,white

然后我这样执行之后:

var arr = ['red','yellow','blue','green','black','white','purple'];

for(var i=0;i

if(i%2==0){

arr.splice(i,1);

console.log("ddddddddddd");

for(var j=0;j

console.log(arr[j]);

}

}

}

yellow blue green black white purple

yellow blue black white purple

yellow blue black white

说明在进行splice的时候,数组结构已经发生了改变,只要删除一项,后面的项就会自动向前移动,并且改变自身的索引值。。。。

特此记录一下这个坑,说明对基本的还是只停留在理论上,在实践上并没有进行验证。

如果要实现自己想要的效果,提供一种方案,就是首先创建一个新数组,然后将不符合条件的项push进这个新数组,然后用新数组替换旧数组即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值