我有一个数组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]);
答案 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!!