负循环中的变量赋值

Variable assignments in negative for loop

典型的反向循环:

           for(let i = arr.length - 1, item = arr[i]; i >= 0; i--){
              let item = arr[i];
              do thing with item
            }
   

我在想我可以通过在 for 声明中分配 item 变量来删除括号

           for(let i = arr.length - 1, item = arr[i]; i >= 0; i--)
              do thing with item
   

但它不起作用,我不明白为什么。 然后在仔细查看代码后,我意识到 item 变量只设置了一次。所以我改成了

           for(let item, i = arr.length - 1; i >= 0; i--, item = arr[i])
              do thing with item

但现在项目显示为未定义且无法弄清楚原因,因为代码显示正确

您没有为项目分配初始值。 这些不是“典型的”for 循环,但无论如何我都不会使用循环。

您只需要数组的值,因此可以使用数组函数:

arr.forEach((item, index) => { 
  // do something with item
}

如果你想以相反的顺序处理它们,有一个反向函数可以用来翻转两端:

arr.reverse().forEach(() => {})

如果您想修改数组,例如将数字数组中的值加倍,您可以使用 map 方法,其功能类似但它 returns 值成为输出数组。

const doubledArr = arr.map((item) => { return item * 2 });

以及流线型的反向加倍:

const doubledReversedArr = arr.map(x => 2*x);

同样的效果,更少的代码。