for循环删除小陷阱

1.场景

顺序删除当前元素

var list = ['a', 'b', 'c', 'd']
for (var i = 0; i < list.length; i++) {
  console.log(list[i])  
  list.splice(i, 1)
}
输出: a, c 并不是去a, b, c, d

2.原因

删除当前的元素,后面的元素就会顶替当前的位置,下标也会随着改变,然而我们的for循环还是在原来的基础上i++,所以就会出现上面的情况

3.解决

var list = ['a', 'b', 'c', 'd']
for (var i = 0; i < list.length; i++) {
  console.log(list[i])  
  list.splice(i, 1)
  i--
}
或者
for (var i = 0; i < list.length; i++) {
  console.log(list[i])  
  list.splice(i--, 1)
}
输出: a, b, c, d

在for循环里面i--,使它恢复到原来的位置就可有实现顺序删除元素

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,440评论 0 5
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,402评论 0 2
  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,887评论 0 8
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,779评论 0 11
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,849评论 2 9