JavaScript变异concat

时间:2017-12-22 22:17:45

标签: javascript arrays

我有一个数组a1的引用。我有一组额外的值a2。我想将a2的所有值连接到a1改变原始数组

使用concat()不起作用,因为它是非变异的。例如:

var a0 = [1,2,3];
var a1 = a0;
var a2 = [4,5,6];
a1 = a1.concat(a2);
console.log(a1); // [1,2,3,4,5,6] YAY
console.log(a0); // [1,2,3]       BOO

除了以下内容之外,还有更好的方法吗?

for (var i=0; i<a2.length; ++i) a1.push(a2[i]);

1 个答案:

答案 0 :(得分:0)

变异push() method接受多个参数。使用apply() method,您可以将a2的所有值作为参数传递给push()

// Mutate a1 to have all the values of a2 added
a1.push.apply(a1, a2);

行动中:

var a0 = [1,2,3];
var a1 = a0;
var a2 = [4,5,6];
a1.push.apply(a1, a2);
console.log(a1); // [1,2,3,4,5,6] YAY
console.log(a0); // [1,2,3,4,5,6] YAY!!