【问题标题】:Remove duplicates from array by keeping 1st array data in typescript通过在打字稿中保留第一个数组数据来从数组中删除重复项
【发布时间】:2021-12-01 01:20:24
【问题描述】:

我有 2 个数组。我需要合并两个数组,但输出应该包含来自 arr1 的所有记录,并且只包含来自 arr2 的唯一记录。键我们可以考虑“数字”。

请告诉我获得输出的最佳方法。基本上我需要合并并获取唯一的“数字”,但结果应该包含来自 arr1 的所有记录,并且只包含来自 arr2 的唯一记录。

let arr1 = [
  {
    "number": "1234",
    "Name": "test",    
    "data": [
      {
        "qty": 0,
        "val": 1.11
      },
      {
        "qty": 500,
        "val": 2.92
      },
      {
        "qty": 1000,
        "val": 2.84
      },
      {
        "qty": 1500,
        "val": 2.66
      }
    ]
  },
    {
    "number": "6776",
    "Name": "test9",    
    "data": [
      {
        "qty": 0,
        "val": 2
      },
      {
        "qty": 100,
        "val": 3
      },
      {
        "qty": 200,
        "val": 4
      },
      {
        "qty": 300,
        "val": 5
      }
    ]
  },
  
]

let arr2 = [
{
    "number": "1234",
    "Name": "test",    
    "data": [
      {
        "qty": 0,
        "val": 1.11
      }
    ]
  },
  {
    "number": "7896",
    "Name": "test4",    
    "data": [
      {
        "qty": 0,
        "val": 5.11
      },
      {
        "qty": 500,
        "val": 6.92
      },
      {
        "qty": 1000,
        "val": 3.84
      },
      {
        "qty": 1500,
        "val": 1.66
      }
    ]
  },
  {
    "number": "4567",
    "Name": "test2",    
    "data": [
      {
        "qty": 0,
        "val": 4.11
      },
      {
        "qty": 500,
        "val": 9.92
      },
      {
        "qty": 1000,
        "val": 5.84
      },
      {
        "qty": 1500,
        "val": 7.66
      }
    ]
  }
]


After merging above 2 arrays I need the below output:

[
  {
    "number": "1234",
    "Name": "test",    
    "data": [
      {
        "qty": 0,
        "val": 1.11
      },
      {
        "qty": 500,
        "val": 2.92
      },
      {
        "qty": 1000,
        "val": 2.84
      },
      {
        "qty": 1500,
        "val": 2.66
      }
    ]
  },
    {
    "number": "6776",
    "Name": "test9",    
    "data": [
      {
        "qty": 0,
        "val": 2
      },
      {
        "qty": 100,
        "val": 3
      },
      {
        "qty": 200,
        "val": 4
      },
      {
        "qty": 300,
        "val": 5
      }
    ]
  },
  {
    "number": "7896",
    "Name": "test4",    
    "data": [
      {
        "qty": 0,
        "val": 5.11
      },
      {
        "qty": 500,
        "val": 6.92
      },
      {
        "qty": 1000,
        "val": 3.84
      },
      {
        "qty": 1500,
        "val": 1.66
      }
    ]
  },
  {
    "number": "4567",
    "Name": "test2",    
    "data": [
      {
        "qty": 0,
        "val": 4.11
      },
      {
        "qty": 500,
        "val": 9.92
      },
      {
        "qty": 1000,
        "val": 5.84
      },
      {
        "qty": 1500,
        "val": 7.66
      }
    ]
  }
  
]

【问题讨论】:

    标签: typescript


    【解决方案1】:

    创建一个 key Set 集合,以便检查它是否已经存在并从 arr2 中过滤掉。

    arr1Set =  new Set(arr1.map(o => o.number));
    let newArry = arr1.concat(...arr2.filter(o => !arr1KeySet.has(o.number)))
    

    let arr1 = [
      {
        "number": "1234",
        "Name": "test",    
        "data": [
          {
            "qty": 0,
            "val": 1.11
          },
          {
            "qty": 500,
            "val": 2.92
          },
          {
            "qty": 1000,
            "val": 2.84
          },
          {
            "qty": 1500,
            "val": 2.66
          }
        ]
      },
        {
        "number": "6776",
        "Name": "test9",    
        "data": [
          {
            "qty": 0,
            "val": 2
          },
          {
            "qty": 100,
            "val": 3
          },
          {
            "qty": 200,
            "val": 4
          },
          {
            "qty": 300,
            "val": 5
          }
        ]
      },
      
    ]
    
    let arr2 = [
    {
        "number": "1234",
        "Name": "test",    
        "data": [
          {
            "qty": 0,
            "val": 1.11
          }
        ]
      },
      {
        "number": "7896",
        "Name": "test4",    
        "data": [
          {
            "qty": 0,
            "val": 5.11
          },
          {
            "qty": 500,
            "val": 6.92
          },
          {
            "qty": 1000,
            "val": 3.84
          },
          {
            "qty": 1500,
            "val": 1.66
          }
        ]
      },
      {
        "number": "4567",
        "Name": "test2",    
        "data": [
          {
            "qty": 0,
            "val": 4.11
          },
          {
            "qty": 500,
            "val": 9.92
          },
          {
            "qty": 1000,
            "val": 5.84
          },
          {
            "qty": 1500,
            "val": 7.66
          }
        ]
      }
    ]
    
    let arr1Set =  new Set(arr1.map(o => o.number));
    let newArry = arr1.concat(...arr2.filter(o => !arr1Set.has(o.number)))
    console.log(newArry);

    【讨论】:

      猜你喜欢
      • 2020-11-29
      • 1970-01-01
      • 2021-09-01
      • 2019-10-10
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 2019-12-15
      相关资源
      最近更新 更多