一行代码复制一个数组

35 浏览
0 Comments

一行代码复制一个数组

This question already has answers here:

复制数组的值

我想创建一个数组,它是现有数组的副本,但不是它的实例。我怎么能在一行中做到这一点?

array1 = new Array('orange', 'red', 'blue', 'green');
array2 = new Array.apply(this, array1);
// Uncaught TypeError: function apply() is not a constructor 

admin 更改状态以发布 2023年5月20日
0
0 Comments

省略new以使apply正常工作(否则它将被解释为new (Array.apply)(…))。由于Array构造函数不需要new,也可以被调用为函数,所以可以简单地这样写:

array1 = new Array('orange', 'red', 'blue', 'green');
array2 = Array.apply(this, array1);

相关问题:使用 'new' 运算符的 .apply()。这可能吗?

然而,你根本不需要使用 Array 构造函数,特别是因为它不能很好地处理只包含一个数字元素的数组。更好的方式:

var array1 = ['orange', 'red', 'blue', 'green'];
var array2 = array1.slice();

0
0 Comments

Array.prototype.slice 是你正在寻找的方法。在定义数组时,你可能还想使用字面量。

var array1, array2;
array1 = ['orange', 'red', 'blue', 'green'];
array2 = array1.slice();

现在有:

array1.join() === array2.join(); // true
array1 === array2; // false

0