【问题标题】:Javascript: how do I copy the value of a single element from an array into another array at the same position?Javascript:如何将单个元素的值从数组复制到另一个数组的同一位置?
【发布时间】:2017-01-22 08:57:24
【问题描述】:

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

array1[i] = array2[i];

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

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

提前谢谢你。

【问题讨论】:

  • javascript 没有关联数组,它们是对象文字并且没有顺序。如果使用 jQuery,请查看 $.extend()
  • "如果我想克隆一个数组,我可以使用 slice() 函数"不,你不能。

标签: javascript jquery arrays clone


【解决方案1】:

您可以使用Object.assignArray.splice

   var cloneItem = Object.assign({}, array1[i]);
   array2.splice(i, 0, cloneItem);

编辑
前一个在该位置添加一个克隆项目,将其余元素推到右侧。如果你只是想替换就做

array2[i] = Object.assign({}, array1[i]);

【讨论】:

    【解决方案2】:

    你可以这样做:

    array1[i] = Object.assign({}, array2[i]);
    

    但如果有原始数组,它就不起作用。 你也可以像你写的那样使用 slice 方法:

    array1[i] = array2.slice(i, 1);
    

    【讨论】:

      【解决方案3】:

      正确地克隆一个数组(不在嵌套结构中留下任何引用)并不是那么简单。你需要一个工具。不幸的是,它不是标准数组方法的一部分。你必须自己开发它。比如

      Array.prototype.clone = function(){
        return this.map(e => Array.isArray(e) ? e.clone() : e);
      };
      

      一旦你有了这个工具,你可以先克隆数组,然后分配你想要的克隆数组的任何项目;比如array1[i] = array2.clone()[i];

      【讨论】:

        猜你喜欢
        • 2011-07-15
        • 1970-01-01
        • 2023-03-29
        • 2016-12-20
        • 1970-01-01
        • 2018-04-19
        • 1970-01-01
        • 2014-07-26
        • 1970-01-01
        相关资源
        最近更新 更多