一行代码复制一个数组
一行代码复制一个数组
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日
省略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();
Array.prototype.slice
是你正在寻找的方法。在定义数组时,你可能还想使用字面量。
var array1, array2; array1 = ['orange', 'red', 'blue', 'green']; array2 = array1.slice();
现在有:
array1.join() === array2.join(); // true array1 === array2; // false