2016-10-23 23 views
1

通過Atom的源代碼,尋找認識解構,我發現這個使用for..of聲明:與...的

for (const {name, duration, x} of results) { 
    dataByBenchmarkName[name] = dataByBenchmarkName[name] || {points: []} 
    dataByBenchmarkName[name].points.push({x, y: duration}) 
} 

我試圖複製這種迭代的終端,但絕不塊執行(好像我缺少一個括號)。我試着迭代對象(淺層和深層)和數組。當我把大括號括起來時,陳述就像文件記錄一樣。任何人都可以給我一個括號的工作示例來學習?一些簡單的像:

var test = ...; 
for(var {x,y,z} of test) { 
    console.log(x); 
}; 

感謝

+0

這第一個代碼示例中會發生什麼取決於results'的'值。 – Pointy

+1

'var test = ...;'???什麼??它需要是一個數組 – vsync

+0

標題中的問題不是你真正要問的。請改爲'幫助理解Atom的源代碼..'' – vsync

回答

6

大括號是隻爲destructuring assignment。 這個工作對我來說:

var test = [{x:1,y:2,z:4}, {x:5, y:6,z:7}]; 
 
for(var {x,y,z} of test) 
 
    console.log(x,y,z);

輸出:

1 2 4 
5 6 7 
2

這工作

var test = [{x:1,y:3,z:2},{x:5,y:6,z:3}] 
 
for(var {x,y,z} of test) { 
 
    console.log(x); 
 
}

+0

謝謝你剛纔看到你是第一個。 – Onyooo

+1

@Onyooo - 如果其他人的回答更好,首先並不意味着什麼,因爲這個頁面將被成千上萬的人看到,他們會得到**最好的答案,而不是第一個答案。 – vsync