如何将数组作为一个元素推入另一个数组

9

我是JS的新手,找不到解决办法来实现类似这样的功能

var arr = [0];
var elem = [1, 2, 3];
???
console.log(arr); // shows [0, [1, 2, 3]];

我尝试使用 .push(elem),JS判断我传递了值的数组(而不是单个值),并连接arr和elem数组的内容,结果为[0, 1, 2, 3]

这可能会起作用 https://www.w3schools.com/jsref/jsref_concat_array.asp - adelindev
1
arr.push(elem) 应该正好满足你的需求。 - dfsq
2
@vidi那是一个糟糕的来源,请参考这个链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat?v=control - Aluan Haddad
1
@dfsq 错误。调用 arr.push() 会将第二个数组作为一个项添加到该数组中,而不是合并这两个数组。 - adelindev
2
我们似乎无法弄清楚您实际想要做什么:)。 您是想要 [0, 1, 2, 3] 还是 [0,[1, 2, 3]] - Aluan Haddad
显示剩余2条评论
3个回答

8

使用 concat 方法!

var arr = [0];
var elem = [1, 2, 3];
var newArr = arr.concat([elem]);
console.log(newArr); // => [0,[1,2,3]]

1
你能解释一下它是如何工作的吗?使用方括号包装是否等同于 new Array(elem)? - WeGa
1
concat是一个数组方法。它可以在数组上调用。我们使用arr.concat来执行它。它将解析给定的元素。如果给定的属性是类似于数组的:arr.concat(elem),它将解析所有这些元素并输出:[0,1,2,3,4],但是如果我们在elem数组周围放置方括号... - user7024559
1
现在我想我明白了。也可以使用arr.push([elem])来完成,但这种情况下源数组将被修改。因此,总结一下,答案是“用方括号包装”。 - WeGa

3
你可以尝试使用扩展运算符来连接数组中的值。
例如:
let arr1 = [1, 2, 3];
let arr2 = [...arr1, 4, 5];

console.log(arr2);
//Output: [ 1, 2, 3, 4, 5 ]

是的,但这并不是问题所要求的内容。(尽管问题可能在最初提问和现在之间进行了修改) - undefined

3
现在,当你写下你想要的内容后,
[0, [1, 2, 3]]

您可以使用至少三种不同的方法来解决问题:
  1. Simple assignment at the end of the array

    var arr = [0],
        elem = [1, 2, 3];
    
    arr[arr.length] = elem;
    console.log(arr);

  2. Array#push for pushing a value/object at the end of an array, which is basically the same as above without indicating the place for inserting, but you can use more item for pusing to the array.

    var arr = [0],
        elem = [1, 2, 3];
    
    arr.push(elem);
    console.log(arr);

  3. Array#concat, creating a new array with with the given array and the parameters. Here cou need to wrap the content in an array, because concat concatinates arrays.

    var arr = [0],
        elem = [1, 2, 3];
    
    arr = arr.concat([elem]);
    console.log(arr);


你几乎是正确的。@Markus Ivancsics 提出了 arr.concat([elem]),它确实起作用了。 - WeGa

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