我有一个像这样的 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/