如何连接两个javascript数组?

时间:2017-07-21 19:02:59

标签: javascript arrays

我似乎无法连接两个javascript数组。这是代码:

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

我在其中创建两个数组'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

我在这里做错了什么?

6 个答案:

答案 0 :(得分:1)

.concat不会改变原始数组,您必须重新分配:

a = a.concat(b);

答案 1 :(得分:1)

concat()不会更改现有数组,但会返回一个新数组,其中包含已连接数组的值。你必须将它分配给一些变量。

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

答案 2 :(得分:1)

不是操纵现有数组a.concat(b)而是返回一个新数组。

你应该尝试:

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

答案 3 :(得分:0)

如果您使用的是ES6,则可以使用spread运算符来获得所需的结果:

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

答案 4 :(得分:0)

如果数组ab各有一个元素,那么这将为您提供答案

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

否则你必须使用地图或在ES6中轻松地使用...

答案 5 :(得分:0)

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



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

a.push.apply(a,b);

console.log(a);




注意: 这是为了完整性而提供的,我的意见是使用concat分配,因为它对我来说更容易了解正在发生的事情。