在JS中以变异方式连接数组的最佳方法是什么?我的问题:
var a = [1,2,3]
var b = a;
a = a.concat([4,5,6]) //<-- typical way of array concatenation in JS
console.log(a) //[1,2,3,4,5,6]
console.log(b) //[1,2,3] <-- I'd like it to be the same like a here
我当然可以使用一些循环,但我想知道是否有更快更清洁的方法来实现它。
答案 0 :(得分:10)
push
变异数组,但它需要参数序列,所以我们使用apply
:
var a = [1,2,3]
var b = a
a.push.apply(a, [4,5,6])
console.log(a) //=> [1, 2, 3, 4, 5, 6]
console.log(b) //=> [1, 2, 3, 4, 5, 6]
在ES6中,您可以使用点差运算符...
:
a.push(...[4, 5, 6])
答案 1 :(得分:1)
您可以使用push
可以获取可变数量的参数的事实,并将所有参数推送到数组的末尾。然后你可以写:
a.push.apply(a, [1, 2, 3]);
由于apply
会将参数数组转换为函数的参数列表。
答案 2 :(得分:0)
您可以将“a”保留为属性,以便可以通过引用访问它:
var myObj = {};
myObj.a = [1,2,3]
var b = myObj;
myObj.a = myObj.a.concat([4,5,6])
console.log(myObj.a);
console.log(b.a);
答案 3 :(得分:0)