如何连接两个 JavaScript 数组?

3
我似乎有困难将两个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个回答

1

.concat不会改变原始数组,你需要重新赋值:

a = a.concat(b);

1

concat()不会改变现有的数组,但会返回一个包含连接后数组值的新数组。你需要将其赋值给某个变量。

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


1
< p>而不是操作现有数组, a.concat(b) 返回一个新的数组。

你应该尝试:

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

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赋值,因为我更容易理解发生了什么。


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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接