我使用下面的代码来获取数组中重复对象的计数。
我正在通过一个包含组的表进行查询,这很复杂。我将组及其复杂性传递给一个对象。我有重复的条目,比如
[
{group: A, complexity: Simple},
{group: A, complexity: Complex},
{group: A, complexity: Simple},
{group: B, complexity: Simple},
{group: A, complexity: Medium}
]我需要如下所示的重复数
[
{group: A, complexity: Simple}: 2,
{group: A, complexity: Complex}: 1,
{group: B, complexity: Simple}: 1,
{group: C, complexity: Medium}: 1
]
var data = {};
var app = [];
for(let i=0; i<=2; i++){
var fName = "Ram";
var lName = "Krishna";
data = { "ID": fName, "Status": lName };
app.push(data);
}
var call = JSON.stringify(duplicate(app));
console.log("call: " + call);
function duplicate(app)
{
var counts = {};
for(var i =0; i < app.length; i++)
{
var ab = JSON.stringify(app[i]);
if (counts[ab])
{
counts[ab] += 1;
}else{
counts[ab] = 1;
}
}
return counts;
}
我得到了下面的输出
call: {"{\"ID\":\"Ram\",\"Status\":\"Krishna\"}":3}我所期待的
call: {"{"ID":"Ram","Status":"Krishna"}":3}有谁能帮我一下吗?
发布于 2021-06-25 03:05:51
使用以下方法,可能会有进一步的改进:
const getDuplicates = arr => {
const dupCount = arr.reduce((acc, curr) => {
acc[curr] = acc[curr] ? acc[curr] + 1 : 1;
return acc;
}, {});
return Object.entries(dupCount).filter(([k, v]) => v > 1).map(([k, v]) => k)
}https://stackoverflow.com/questions/68120929
复制相似问题