2017-07-21 8 views
2

2つのjavascript配列を連結するのに問題があるようです。私は(要素が同様に配列された状態で、誰が気に)二つの配列「A」及び「B」を作成する2つのJavaScript配列を連結するにはどうすればいいですか?

console.log("\n\n"); 
a = [[1,2]]; 
b = [[1,2,3]]; 
console.table(a); 
console.table(b); 
a.concat(b); 
console.table(a); 

「B」の単一の要素を追加する目的で、:ここでコードは配列へ(配列[1,2,3]「」私は今、二つの要素(配列[1,2]と配列[1,2,3]を持つように「b」を期待していたが、それはそう見ていない、次のように私は出力を得る:。。

enter image description here

console.tableの最後の出力に、内容が2行あると予想しました

0 1 2 
1 1 2 3 

私はここで間違っていますか?

答えて

1

既存の配列を操作する代わりにa.concat(b)は新しいものを返します。

あなたは試してみてください:あなたが再割り当てを回避している場合

var c = a.concat(b) 
console.table(c) 
1

.concatは、あなたが再割り当てる必要があり、元の配列を変化させません。

a = a.concat(b); 
0

あなたはES6を使用している場合は、望ましい結果を得るために拡散演算子を使用することができます。

console.log("\n\n"); 
a = [[1,2]]; 
b = [[1,2,3]]; 
console.table(a); 
console.table(b); 
c = [...a, ...b]; 
console.table(c); 
1

concat()は、既存の配列は変更しませんが、結合された配列の値を含む新しい配列を返します。それをいくつかの変数に割り当てる必要があります。

console.log("\n\n"); 
 
a = [[1,2]]; 
 
b = [[1,2,3]]; 
 
console.log(a); 
 
console.log(b); 
 
console.log(a.concat(b));

0

配列abなら、これはあなたに答え

var c = a[0].concat(b[0]); 

を与える一つの要素それぞれを持っているそうでなければ、マップを使用するか、簡単にES6でそれをしなければならないでしょうwith ...

0

、あなたがArray.push.apply()を使用することができます。

var a = [[1,2]], 
 
    b = [[1,2,3]]; 
 

 
a.push.apply(a,b); 
 

 
console.log(a);

:これは、完全性のために提供された 、私の意見はを使用することです私は何が起こっているのかを理解するのが簡単です。

関連する問題