将重复的JSON对象获取到数组中

时间:2018-07-30 04:56:01

标签: javascript arrays json duplicates plane

我有JSON对象数组

[
 {"OBJECT":"S_DEVELOP","AUTH":"&_DEV_01_40","AKTPS":"A"},
 {"OBJECT":"S_DEVELOP","AUTH":"&_DEV_TMPOBJ","AKTPS":"A"},
 {"OBJECT":"S_DEVELOP","AUTH":"&_DEV_01_40","AKTPS":"A"}
]

从这些对象中,我需要检查AUTH值是否通用(重复),并且如果任何此类对象具有重复的AUTH值,则需要将此类对象存储在数组中。

从上述JSON对象开始,由于重复了AUTH值&_DEV_01_40,因此输出应类似于

[
  {"OBJECT":"S_DEVELOP","AUTH":"&_DEV_01_40","AKTPS":"A"}, 
  {"OBJECT":"S_DEVELOP","AUTH":"&_DEV_01_40","AKTPS":"A"}
]

有人可以指导我如何用平面Javascript编写它。

谢谢。

1 个答案:

答案 0 :(得分:0)

这将遍历对象数组两次。一次查找重复的AUTH,然后第二次仅检索具有重复的AUTH的对象。

function getDuplicates(array) {
  let seen = {};

  array.forEach((obj) => {
    seen[obj["AUTH"]] = typeof seen[obj["AUTH"]] === "undefined" ? 1 : seen[obj["AUTH"]] + 1;
  });

  let duplicateKeys = Object.keys(seen).filter((key) => seen[key] > 1);

  return array.filter((obj) => duplicateKeys.indexOf(obj["AUTH"]) !== -1);
}

JSFiddle