How to concat arrays in JS in mutating way?
本问题已经有最佳答案,请猛点这里访问。
在JS中,以可变方式连接数组的最佳方法是什么?我的问题:
1 2 3 4 5 | 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 |
当然,我可以使用一些循环,但我想知道是否有更快更干净的方法来实现它。
1 2 3 4 5 | 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中,您可以使用排列运算符
1 | a.push(...[4, 5, 6]) |
您可以使用这样一个事实:
1 | a.push.apply(a, [1, 2, 3]); |
。
因为
您可以在这里使用
1 | a.push.apply(a, [4,5,6]); |
或者更容易理解:
1 | Array.prototype.push.apply(a, [4,5,6]); |
。
演示
简而言之,
您可以将"a"保留为属性,以便可以通过引用访问它:
1 2 3 4 5 6 7 | 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); |