You need to enable JavaScript to run this app. JS for...of循环内如何比较索引?完成for循环转for...of
优惠活动
大模型
产品
解决方案
定价
更多

JS for...of循环内如何比较索引?完成for循环转for...of

for...of 结合 entries() 实现相邻元素索引比较的正确方式

现有代码的两处核心问题

  • 解构顺序完全写反:items.entries() 每次迭代返回的固定结构是 [索引值, 当前元素值],你之前写的const [item, i] of items.entries(),会把索引值赋值给item、把元素值赋值给i,变量语义完全错位。
  • 判断逻辑错位:原传统for循环的判断逻辑,从来不是比较两个索引值是否相等,而是比较当前索引位置的元素、和下一个相邻索引位置的元素是否相等。你注释里写的if (i === i+1)本身就是恒不成立的无效判断。

与原循环运行结果完全对齐的写法

for (const [i, item] of items.entries()) {
  // 完全复刻原逻辑:对比当前位置元素与下一个相邻位置的元素
  if (item === items[i + 1]) {
    // ... 原有业务逻辑
  }
}

保证结果一致的注意细节

不要为了避免数组越界,额外加i < items.length - 1的跳过判断。原传统for循环本身会遍历到数组最后一个有效下标:当i走到最后一个元素的位置时,items[i+1]取到的是undefined,这个行为要原样保留,否则最终的运行结果会和原循环出现偏差。循环中通过解构直接拿到当前索引,不需要额外在外部维护独立的索引变量。


内容的提问来源于stack exchange,提问作者randomCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 03:27:04