2017-07-21 79 views
2

我似乎無法連接兩個JavaScript數組。下面是代碼:如何連接兩個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」(與元件是陣列爲好,但誰在乎),與添加「B」的單個元件的目標(數組[1,2,3]到數組「A」我希望「b」到現在已經兩個元素(數組[1,2]和陣列[1,2,3],但它不看,所以我得到的輸出如下:。

enter image description here

我預計console.table的最後一個輸出有兩行,內容爲

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與...

0

如果您避免了重新分配,你可以使用Array.push.apply()

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

 
a.push.apply(a,b); 
 

 
console.log(a);

注:這是供完整性,我的意見是使用concat分配,因爲它更容易理解正在發生的事情。