Javascript:如何将数组中单个元素的值复制到同一位置的另一个数组?

时间:2016-09-14 13:58:04

标签: javascript jquery arrays clone

如果我想克隆一个数组,我可以使用slice()函数,但如果我想“克隆”一个元素呢?我想做这样的事情:

array1[i] = array2[i];

但我想复制值,而不是参考。 我怎样才能做到这一点?此外,该解决方案是否也适用于关联数组?例如:

array1["one"] = array2["one"];

提前谢谢。

3 个答案:

答案 0 :(得分:0)

您可以使用Object.assignArray.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];