首页 > 解决方案 > json数据检查相同的id是否重复

问题描述

我有一个 json 数据,其中一个 id 有不同的 color_id。所以从那里我只想检查相同的 id 是否重复然后只保留第一个

这是我的示例 JSON

var data= [{ "id": "1", "name": "xxx", "age": "22","color_id": "22" },
    { "id": "1", "name": "yyy", "age": "15","color_id": "1" },
    { "id": "5", "name": "zzz", "age": "59","color_id": "22" }];

我想要的输出

var data= [{ "id": "1", "name": "xxx", "age": "22","color_id": "22" },
    { "id": "5", "name": "zzz", "age": "59","color_id": "22" }];

我尝试了 reduce,但在那里我发现修改了数据结构,所以我不确定我是否会得到我想要的输出。

标签: javascriptjqueryarraysjsonfilter

解决方案


var data = [{
    "id": "1",
    "name": "xxx",
    "age": "22",
    "color_id": "22"
  },
  {
    "id": "1",
    "name": "yyy",
    "age": "15",
    "color_id": "1"
  },
  {
    "id": "5",
    "name": "zzz",
    "age": "59",
    "color_id": "22"
  }
];

let map = {};
let uniqueEntries = data.filter((el) => map[el.id] ? false : map[el.id] = true);
console.log(uniqueEntries )

解释:

  1. 您创建一个我们存储 ID 的地图。
  2. 然后过滤数组,每次我们找到不在地图中的条目时,我们将其添加到列表中并返回 true。如果我们已经在列表中拥有它,我们返回 false 以丢弃该条目。

条件的最后一部分是使用赋值返回赋值的事实。


推荐阅读