【问题标题】:Clone an array of objects which contains another array of objects克隆一个包含另一个对象数组的对象数组
【发布时间】:2018-04-15 04:40:57
【问题描述】:

在我的 TypeScript 程序中,我有一个如下所示的数组:

array = [
  {
    id,
    ...
    nested: [
      {
        id,
        ..
      },
      {
        id,
        ..
      }
    ]
  },
  ...
]

我需要创建这个数组的副本,但是我在网上找到的所有方法(包括 this thread 似乎只适用于对象数组而不是这里的嵌套类型(因为嵌套数组也被操作) )。虽然JSON.parse(JSON.stringify(array)) 可以工作,但我在对象中有一个必须保留的日期属性。

我能做什么?

编辑:不确定为什么这被标记为重复,但我特别提到了该线程在这种情况下不起作用的事实。

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    你试过lodash.cloneDeep()吗? https://lodash.com/docs/4.17.5#cloneDeep

    【讨论】:

      【解决方案2】:

      如果允许您使用外部库,请查看 _.cloneDeep(value) 中的 lodash 库。代码应如下所示:

      // Original array
      const originalArray = [
        {
          id,
          ...
          nested: [
            {
              id,
              ..
            },
            {
              id,
              ..
            }
          ]
        },
        ...
      ];
      
      // Cloned array
      const clonedArray = lodash.cloneDeep(originalArray);
      

      应该能解决问题。

      【讨论】:

        【解决方案3】:

        你可以用这个

        function extend( a, b ) {
                for( var key in b ) { 
                    if( b.hasOwnProperty( key ) ) {
                        a[key] = b[key];
                    }
                }
                return a;
            }
        
        copyarray = extend( {}, copyarray);
        extend( copyarray, array);
        

        【讨论】:

          猜你喜欢
          • 2021-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-24
          • 2019-02-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多