【问题标题】:Cloning an array of objects in JS在 JS 中克隆一个对象数组
【发布时间】:2021-12-28 08:15:36
【问题描述】:

所以我在反应应用程序中有以下对象数组:

const ar = [{name:'name', age: 20}];

如何将对象的 ar 数组相乘,使其具有相同的结构,并创建 1000 个它的副本?示例:

const ar = [{name:'nameOne', age: 21},{name:'nameTwo', age: 22}]

等等

【问题讨论】:

  • 您想要一个对象的副本还是只需要相同的键但具有不同的值?

标签: javascript arrays ecmascript-6


【解决方案1】:

如果需要不同,您应该使用 for 循环和 Array.push() 来实现,如下所示:

for(var i = 0; i < 1000; i ++){
    ar.push({name: "name" + i, age: i + 1});
}

把它变成“一、二、三”将是相当困难的。

【讨论】:

    【解决方案2】:

    对于浅拷贝,您可以对数组使用新的 es6 扩展运算符。

    let arr_to_copy = [{name:'name', age: 20}];
    
    let output_arr = [];
    
    let i = 1000;
    
    while (i > 0) {
    
      output_arr.push([...arr_to_copy])
    
      i--;
    }
    
    console.log(output_arr)
    

    这不适用于深层(嵌套)数据。这是spread operator上的一篇好帖子

    对于嵌套数据,您必须使用像 lodash 这样的库,或者制作自己的函数。

    【讨论】:

      【解决方案3】:
      const ar = [{
        name: 'nameOne',
        age: 21
      }]
      

      你可以使用下面的循环

      for (let i = 0; i < 1000; i++) {
        ar.push({
          'name': 'name' + i,
          'age': 21 + i
        });
      }
      

      【讨论】:

      • 您可以pushsplice 使用const 声明的数组
      【解决方案4】:

      您可以使用此代码克隆数组 1000 次:

      const ar = [{name:'name', age: 20}];
      
      var i = 0;
      var newArray = [];
      
      while(i < 1000){
        newArray.push(ar[0]);
        i++;
      }
      
      console.log(newArray.length, newArray[999])

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-07
        • 2018-11-27
        • 1970-01-01
        • 1970-01-01
        • 2019-02-19
        • 2019-04-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多