负循环中的变量赋值
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);
同样的效果,更少的代码。
典型的反向循环:
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);
同样的效果,更少的代码。