javascript - 如何在javascript中获取json数组中的重复对象

标签 javascript arrays json

我有一个像这样的 JSON 数组:

var data = [
      {title: "HH02"},
      {title: "HH03"},
      {title: "HH04"},
      {title: "HH02"},
      {title: "HH07"},
      {title: "HH08"},
      {title: "HH08"},
      {title: "HH10"},
      {title: "HH02"},
      {title: "HH11"}
]

首先,我想在 JSON 数组中获取重复的对象,如下所示:

var output = [
     {title: "HH02" },
     {title: "HH08" },
]

然后我想获取所有重复的对象以及它们在另一个 JSON 数组中重复的次数,如下所示

var output = [
     {title: "HH02" , repeat: 3},
     {title: "HH08" , repeat: 2},
]

我尝试这样做,但效果不佳:

data.map(v => v.title).sort().sort((a, b) => {
                    if (a === b) output.push(a);
                })

最佳答案

您可以使用减少、过滤和映射

  • 首先按标题对所有值进行分组,计算重复次数
  • 过滤出现一次或少于一次的标题(排除它们)
  • 映射它们以获得所需的输出

var data = [{title: "HH02"},{title: "HH03"},{title: "HH04"},{title: "HH02"},{title: "HH07"},{title: "HH08"},{title: "HH08"},{title: "HH10"},{title: "HH02"},{title: "HH11"}]

let final = [...data.reduce((op, inp) => {
  let title = inp.title
  op.set(title, (op.get(title) || 0) + 1)
  return op
}, new Map()).entries()].filter(([_,repeat]) => repeat > 1).map(([title, repeat]) => ({
  title,
  repeat
}))

console.log(final)

关于javascript - 如何在javascript中获取json数组中的重复对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58522365/

相关文章:

javascript - 如何避免 React 应用程序中的全局状态?

PHP 将 JSON 值解析为 Html 表

asp.net-mvc - ASP.NET MVC Json DateTime序列化转换为UTC

sql - Azure SQL 数据库中的 Json 支持

javascript - 如何在一个函数中抛出错误以被另一个函数捕获?

javascript - 如何动态地将参数传递到 Angular 2中的点击事件方法中

javascript - 按钮内的链接在 Firefox 中不起作用

c - 这看起来不像一个函数。这是什么?

arrays - 快速将数组追加到数组

c - 在 ANSI C 中使用数组和指针