1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > JS循环遍历并删除指定元素

JS循环遍历并删除指定元素

时间:2024-03-18 10:09:48

相关推荐

JS循环遍历并删除指定元素

昨天一个朋友让我帮她修改的一段代码:

需求要每条数据轮播1分钟,然后删除,运行的时候会发现foreach循环中,删除一个之后,其他的就无法删除了。

【分析原因】

数据格式例如:['a','b','b','c'],需求是删除item为‘b’的元素

第一次循环:SysNotices数据:['a','b','b','c'],index为0,item:'a',不符合需求,

第二次循环:SysNotices数据:['a','b','b','c'],index为1,item:'b',执行splice(index,1),

第三次循环:SysNotices数据:['a','b','c'],index为2,item:'c',不符合需求,

到此数据中还有一个'b'删除不掉

使用splice删除数组元素会改变原始数组,这样会打乱foreach的index指向数组的下标

解决方法:

for

for(var i=0,sign=true,len=that.data.SysNotices.length;i<len;sign ? i++ : i){if(that.data.SysNotices[i] && that.data.SysNotices[i].kind == 1){sign = false;setTimeout(() => {that.data.SysNotices.splice(i,1)that.setData({SysNotices: that.data.SysNotices,currentSwiper:0})}, 60000)}else{sign = true;}}

使用sign标记是否执行删除操作,删除元素则i保持不变,不执行删除时i++ ,保证下一次循环时的指向的数组元素正确。

暂时写到此处,如有其他更好的方法再更新。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。