2017-02-20 15 views
2

私はKyle Simpson's book (You don't Know JS - ES6 and beyond)て読んでいたし、彼は配列を並べ替えるには、この例を示します:ES6の非構造:配列の並べ替えメカニズム

var a1 = [ 1, 2, 3 ], 
    a2 = []; 

[ a2[2], a2[0], a2[1] ] = a1; 

console.log(a2);     // [2,3,1] 

誰かが私は[私はそれを返すように期待していた(何が起こっているか3、1、2を理解するのに役立ちます])。 I入力の他の要素ならば、それはより多くの混乱を取得:

[ a2[2], a2[0], a2[0] ] = a1; // [3, undefined, 1] 
[ a2[1], a2[0], a2[0] ] = a1; // [3, 1] 

答えて

2

あなたはコードがコンパイルさまで何かを見つけるためにBabel's REPLを使用することができます。 (私は追加のコメントで出力を注釈を付けました。)それはちょうど1つのステップでarr2にな破壊と値を追加する2つのステップを組み合わせて

var a1 = [1, 2, 3], 
    a2 = []; 

a2[2] = a1[0]; // a1[0] = 1 
a2[0] = a1[1]; // a1[1] = 2 
a2[1] = a1[2]; // a1[2] = 3 
console.log(a2); // [2,3,1] 
0

。これをしたのと同じです。

var a1 = [1, 2, 3], 
 
    a2 = []; 
 

 
var [one, two, three] = a1; 
 
a2[0] = two; 
 
a2[1] = three; 
 
a2[2] = one 
 
console.log(a2)

1

源アレイ内のインデックスに非構造パターンマップ内の位置。これは、非構造の反対で

a2 = [ a1[2], a1[0], a1[1] ]; 

a2[2] = a1[0]; 
a2[0] = a1[1]; 
a2[1] = a1[2]; 

どこから来る期待していた結果:だから、と同等です。この1

[ a2[2], a2[0], a2[0] ] = a1; 

a2[1]に割り当てることはありませんので、あなたはその要素の未定義得ます。 a2[0]に2回、最初に2、次に3から割り当てます。したがって、最終値は3です。

1

実際は非常に簡単です。 ES6の配列を破壊

は次のように基本的である:

あなたは

var arr = [1, 2, 3, 4]; 

を持っている場合、これはあなたが

[a, b, c, d] = arr; 

のようなものを書くときには、実際にこの

を言っていることを意味し
a = arr[0]; 
b = arr[1]; 
c = arr[2]; 
d = arr[3]; 
bcまたは dの位置が配列 arrのインデックス、あなたが

[a, c, b, d] = arr; 

を書いた場合、あなたが本当に何を意味するような

a = arr[0]; 
c = arr[1]; 
b = arr[2]; 
d = arr[3]; 
であるに対応していることを3210

お知らせ