典型的反向 for 回圈:
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
但是現在專案似乎未定義并且無法弄清楚原因,因為代碼看起來是正確的
uj5u.com熱心網友回復:
您沒有為專案分配初始值。這些不是“典型的” for 回圈,但無論如何我都不會使用回圈。
您只需要陣列的值,因此可以使用 Array 函式:
arr.forEach((item, index) => {
// do something with item
}
如果您想以相反的順序處理它們,可以使用一個 reverse 函式來翻轉末端:
arr.reverse().forEach(() => {})
如果您想修改陣列,例如通過將數字陣列中的值加倍,您可以使用 map 方法,該方法的功能類似,但它回傳的值成為輸出陣列。
const doubledArr = arr.map((item) => { return item * 2 });
還有一個流線型的反向加倍:
const doubledReversedArr = arr.map(x => 2*x);
相同的效果,更少的代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/433031.html
標籤:javascript for循环
上一篇:將列資料框與另一個資料框映射
