美文网首页
迭代数组并删除里面元素,而不打破循环

迭代数组并删除里面元素,而不打破循环

作者: 莫威權在B612等着那温柔的风 | 来源:发表于2018-02-27 22:35 被阅读15次

Review 的时候,发现了下面的问题,我就总结一下发上来了~

问题的代码简化版

for (let i = 0; i < locations.length; i++) {
  if (locations[i] === -1) {
    locations.remove(locations[i]); //删除数组里的第 i 个元素
    i = 0;//不得已的办法 有什么更好的解决方法吗 需求是直接更改到locations数组的数据
  }
}

问题: 实践后不得已重置了计数器i=0,不然会发生跳数的情况,有没有不重置计数器又能达成需求的方法

解决方法

发生跳数,是因为删除 item 的时候,导致后面的 item 位置向前移动 1 位了,且索引增加了 1 ,因此跳过了 1 个 item

解决思路: 直接从后向前进行迭代即可解决,因为删除数组中的 item ,即使后面的 item 前移,也不会导致跳过的问题

for (let i=locations.length-1; i>=0; i--) {
  if (locations[i] === -1) {
    locations.remove(locations[i]); //删除数组里的第 i 个元素
  }
}

更多其它的思路,参考这里:

相关文章

  • 迭代数组并删除里面元素,而不打破循环

    Review 的时候,发现了下面的问题,我就总结一下发上来了~ 问题的代码简化版 问题: 实践后不得已重置了计数器...

  • JavaScript数据结构

    数组 数组实现 创建和初始化数组 访问和迭代数组 添加元素 删除元素 在任意位置添加和删除元素 JavaScrip...

  • 数组对象方法

    数组的删除 数组的删除分为删除并返回第一个元素shift(),或者删除并返回最后一个元素pop() 数组的添加 数...

  • 找出多个数组中的最大数

    用for循环来迭代数组,并通过arr[i]的方式来访问数组的每个元素。 知识点:Math.max.apply(nu...

  • Js中循环删除数组元素

    JavaScript里在for循环里splice删除数组指定元素的注意事项:需要删除多个元素时,在for循环里直接...

  • js 数组操作

    遍历删除元素: 遍历数组:for循环遍历: forEach遍历:

  • List使用迭代器循环遍历及删除元素

    一、结论 for循环、foreach都不能用来删除指定元素,可以通过迭代器来删除指定的元素 二、代码

  • Math数据Date

    push是往数组增加一个index最大元素 pop是把数组index最大元素删除并返回删除的元素 shift删除数...

  • 2020-03-05-Java

    1.Iterator接口 迭代器:逐个访问集合内的元素,这种方式叫迭代方式。foreach循环语法,对数组元素逐个...

  • js 数组操作合集(主要针对对象数组)

    1,根据对象中元素 查找对象数组中对应的元素 2,删除数组中指定对象的元素 并返回删除后的数组 3,js数组实现权...

网友评论

      本文标题:迭代数组并删除里面元素,而不打破循环

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