我想用另一个数组值替换所有值,两个数组的大小相同

SUG*_*UGU 12 javascript

例如:

var Array1=array(1,2,3,4,5,6);
var Array2=array(7,8,9,10,11,12);
Run Code Online (Sandbox Code Playgroud)

Array2Array1值替换之后应该得到结果数组

var Array1=array(7,8,9,10,11,12);
Run Code Online (Sandbox Code Playgroud)

bro*_*ofa 21

在ES6之前:

Array1.length = 0;                  // Clear contents
Array1.push.apply(Array1, Array2);  // Append new contents
Run Code Online (Sandbox Code Playgroud)

发布ES6:

Array1.splice(0, Array1.length, ...Array2);
Run Code Online (Sandbox Code Playgroud)

  • Andy 和@broofa 的答案之间的巨大差异。两者在不同的上下文中都是正确的。Andy 创建一个新的 Array 对象,其内容与第二个数组相同,只有一个对新对象的引用,并丢弃对第一个数组对象的引用。broofa 保留第一个数组对象,但更改内容以匹配第二个数组对象。因此,代码中其他地方对第一个数组对象的任何其他引用都会看到新值。OP的需求尚不清楚。 (2认同)

And*_*ndy 19

用途slice:

Array1 = Array2.slice(0);
Run Code Online (Sandbox Code Playgroud)

这将需要复制Array2,不是做一个参考吧,所以如果你修改了Array2他们不会被反射Array1.

DEMO

  • 这不会替换实际的数组,而是将变量的指针替换为新数组,这可能是不可取的,就像您无法指向内存中的另一个位置的情况一样,因为其他代码部分已经引用了原始指针,因此这里的第一个答案可能更好 (2认同)