美文网首页
for循环删除小陷阱

for循环删除小陷阱

作者: 亦亦嘟嘟 | 来源:发表于2020-03-11 11:51 被阅读0次

    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--,使它恢复到原来的位置就可有实现顺序删除元素

    相关文章

      网友评论

          本文标题:for循环删除小陷阱

          本文链接:https://www.haomeiwen.com/subject/eosqjhtx.html