我似乎无法连接两个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]
,但它看起来并不是这样。我得到如下输出:
我希望console.table
的最后一个输出包含两行内容
0 1 2
1 1 2 3
我在这里做错了什么?
答案 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)
如果数组a
和b
各有一个元素,那么这将为您提供答案
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
分配,因为它对我来说更容易了解正在发生的事情。