您好,匿名用户

splice删除数组元素会出现问题 js

0 投票

用splice方法删除数组下面元素会有问题,是index导致的

let arr = [{xxx:[1,2,3]},{xxx:[]},{xxx:[4,5,6]},{xxx:[11]},{xxx:[55]},{xxx:[]},{xxx:[]},{xxx:[88]}]
arr.forEach((item,index)=>{
  if (item['xxx'].length==0) {
    arr.splice(index,1)
  }
})

//输出结果是 [{xxx:[1,2,3]},{xxx:[4,5,6]},{xxx:[11]},{xxx:[55]},{xxx:[]},{xxx:[88]}] //发现还有一个没删除成功
用户头像 提问 3 天 @ Fiddlesticks 中士 (1,057 威望)
分享到:

1个回答

0 投票
 
最佳答案

用倒序就行了,至少下标不会被改变,感谢各位大牛回答

let arr = [{xxx:[1,2,3]},{xxx:[]},{xxx:[4,5,6]},{xxx:[11]},{xxx:[55]},{xxx:[]},{xxx:[]},{xxx:[88]}]
for (let i = arr.length-1; i >= 0; i--) {
   if (!arr[i]['xxx'].length) arr.splice(i,1)
} 
用户头像 回复 3 天 @ Zilean 中士 (1,090 威望)
选中 5月12日 @Fiddlesticks
提一个问题:

相关问题

0 投票
1 回复 159 阅读
用户头像 提问 2017年 2月12日 @ Twisted Fate 中士 (1,019 威望)
0 投票
1 回复 110 阅读
0 投票
1 回复 266 阅读
0 投票
1 回复 69 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...