如果我想克隆一个数组,我可以使用slice()函数,但如果我想“克隆”一个元素呢?我想做这样的事情:
array1[i] = array2[i];
但我想复制值,而不是参考。 我怎样才能做到这一点?此外,该解决方案是否也适用于关联数组?例如:
array1["one"] = array2["one"];
提前谢谢。
答案 0 :(得分:0)
您可以使用Object.assign和Array.splice
var cloneItem = Object.assign({}, array1[i]);
array2.splice(i, 0, cloneItem);
修改强>
之前在位置添加了一个克隆项,将其余元素推向右侧。如果您只想更换,请执行
array2[i] = Object.assign({}, array1[i]);
答案 1 :(得分:0)
你可以这样做:
array1[i] = Object.assign({}, array2[i]);
但是如果有一个基元的数组,它就不起作用。 你也可以像你写的那样使用切片方法:
array1[i] = array2.slice(i, 1);
答案 2 :(得分:0)
正确克隆数组(不在嵌套结构中留下任何引用)并不那么简单。你需要一个工具。不幸的是,它不是标准数组方法的一部分。你必须自己开发它。如
Array.prototype.clone = function(){
return this.map(e => Array.isArray(e) ? e.clone() : e);
};
一旦掌握了这个工具,你可以先克隆数组,然后分配你想要的克隆数组的任何项目;例如array1[i] = array2.clone()[i];