将多个元素添加到所有相同的数组中

$ node > A = [0, 1, 23] [ 0, 1, 23 ] > B = A [ 0, 1, 23 ] > A.splice(0, 3) [ 0, 1, 23 ] > B [] > A [] > A = A.concat([1, 2]) [ 1, 2 ] > B [] 

这是对的。 但是,在调用concatB数组是否等于A

我知道有循环解决scheme,但还有什么其他的替代scheme可以在多个数组中添加多个相同的元素?

顺便说一句,我不想​​直接修改BA = B = A.concat(...) )。

保罗是正确的,你可以这样做:

 A.push.apply(A,[1, 2]); 

对于那些你不知道, Array#push接受variables参数,而Function#apply将一个variables参数接受函数转换为数组接受函数。

你可以像这样使用Array.prototype.splice本身

 var A = [0, 1, 23], B = A; A.splice.apply(A, [A.length, 0].concat([1, 2])); console.log(A, B, A === B); // [ 0, 1, 23, 1, 2 ] [ 0, 1, 23, 1, 2 ] true 

这里, A.length0表示数组的起始位置和要移除的元素的数量。

我们将其与要插入的实际元素数组连接起来。 所以,传递给A.splice的论据看起来就像这样

 A.splice(A.length, 0, 1, 2); 

由于splice就地操作, AB仍然引用相同的对象。