我得到了一份清單——
let listA = {value: 10, rest: {value: 20, rest: { value: 30, rest: null }}}
我需要將它轉換成一個陣列 -
[10, 20, 30]
我用這個 for 回圈來檢查串列中的鍵
這沒用。Eloquent JS 書使用這個 for 回圈 -
let array = [];
for (let node = list; node; node = node.rest){
array.push(node.value);
我是初學者。我只遇到過簡單的 for 回圈,例如 -
for(let i=0; i <= array.length; i )
和類似的版本。
有人可以解釋一下這個 for 回圈語法嗎?
這個 for 回圈有效,但不知道如何
uj5u.com熱心網友回復:
您的“串列”是一個鏈表。它被建模為遞回嵌套的物件。在以迭代形式撰寫時,您需要遞回演算法或手動跟蹤當前的“堆疊”。
let array = [];
for (let node = list; node; node = node.rest) {
array.push(node.value);
}
獲取第一個物件,將其推入陣列,然后讓當前物件指向node.rest(內部嵌套物件)并重復此操作,直到當前物件不再指向任何地方(node簡寫為!!node:它測驗值是否為真。不非常正確,但您可以將其視為node != null)。
如果您不習慣非索引的 for 回圈,它可以很容易地轉換為具有相同行為的 while 回圈:
let array = [];
let node = list;
while (node) { // shorthand for `!!node`: tests the value to be truthy
array.push(node.value);
node = node.rest;
}
該變數node按順序采用以下值:
{ value: 10, rest: { value: 20, rest: { value: 30, rest: null } } }{ value: 20, rest: { value: 30, rest: null } }{ value: 30, rest: null }null
uj5u.com熱心網友回復:
您的輸入物件是帶有值鍵的嵌套 json 物件,其余為下一個物件。
{value: 10, rest: {value: 20, rest: { value: 30, rest: null }}}
您放置的 For 回圈正在迭代嵌套物件
在第一次迭代中,它將根物件推送值 10 到陣列。
在第二次迭代中,它采用第一個嵌套物件讀取值 20 并將其推送到陣列。
在第三次迭代中,它讀取下一個嵌套物件并將值 30 推送到陣列。
?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/393471.html
標籤:javascript for循环
上一篇:React-處理按鈕中的多個狀態
