首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JavaScript ES5中从数组返回重复的对象计数

如何在JavaScript ES5中从数组返回重复的对象计数
EN

Stack Overflow用户
提问于 2021-06-25 02:21:58
回答 1查看 55关注 0票数 0

我使用下面的代码来获取数组中重复对象的计数。

我正在通过一个包含组的表进行查询,这很复杂。我将组及其复杂性传递给一个对象。我有重复的条目,比如

代码语言:javascript
复制
[
    {group: A, complexity: Simple},
    {group: A, complexity: Complex},
    {group: A, complexity: Simple},
    {group: B, complexity: Simple},
    {group: A, complexity: Medium}
]

我需要如下所示的重复数

代码语言:javascript
复制
[
    {group: A, complexity: Simple}: 2,
    {group: A, complexity: Complex}: 1,
    {group: B, complexity: Simple}: 1,
    {group: C, complexity: Medium}: 1
] 

代码语言:javascript
复制
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;

}

我得到了下面的输出

代码语言:javascript
复制
call: {"{\"ID\":\"Ram\",\"Status\":\"Krishna\"}":3}

我所期待的

代码语言:javascript
复制
call: {"{"ID":"Ram","Status":"Krishna"}":3}

有谁能帮我一下吗?

EN

回答 1

Stack Overflow用户

发布于 2021-06-25 03:05:51

使用以下方法,可能会有进一步的改进:

代码语言:javascript
复制
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)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68120929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档