首页 > 解决方案 > 如何根据两列过滤 React 中的数据集以仅获取唯一的数据组合?

问题描述

我正在尝试过滤以下数据集以创建一个仅包含基于版本和名称的唯一值的数据集。

Data = [{Id: 1, Version: "set1", Name: "apple", Location: "US"},
        {Id: 2, Version: "set1", Name: "apple", Location: "US"},
        {Id: 3, Version: "set2", Name: "apple", Location: "US"},
        {Id: 4, Version: "set1", Name: "banana", Location: "GER"},
        {Id: 5, Version: "set1", Name: "banana", Location: "GER"},
        {Id: 6, Version: "set3", Name: "cake", Location: "UK"},
        {Id: 7, Version: "set3", Name: "cake", Location: "UK"},
        {Id: 8, Version: "set3", Name: "cake", Location: "UK}]

期望的结果:

Data = [{Id: 1, Version: "set1", Name: "apple", Location: "US"}
        {Id: 2, Version: "set2", Name: "apple", Location: "US"},
        {Id: 3, Version: "set1", Name: "banana", Location: "GER"},            
        {Id: 4, Version: "set3", Name: "cake", Location: "UK"}]

标签: reactjs

解决方案


const Data = [{Id: 1, Version: "set1", Name: "apple", Location: "US"},
        {Id: 2, Version: "set1", Name: "apple", Location: "US"},
        {Id: 3, Version: "set2", Name: "apple", Location: "US"},
        {Id: 4, Version: "set1", Name: "banana", Location: "GER"},
        {Id: 5, Version: "set1", Name: "banana", Location: "GER"},
        {Id: 6, Version: "set3", Name: "cake", Location: "UK"},
        {Id: 7, Version: "set3", Name: "cake", Location: "UK"},
        {Id: 8, Version: "set3", Name: "cake", Location: "UK"}]
const lookup = []      
const filtered = Data.map(d => {
  if(lookup.includes(d.Version+d.Name)){
    return null
  }else{
    lookup.push(d.Version+d.Name)
    return d
  }
}).filter(data => data !== null)
console.log(filtered)


推荐阅读