javascript - 如何获取javascript对象中具有相似值的键的数量?

标签 javascript arrays angularjs mongodb object

我需要实现这样的目标:

var data = [
    {
        tag:'A',
        others:'Abc'
    },
    {
        tag:'B',
        others:'Bbc'
    },
    {
        tag:'A',
        others:'Acb'
    }
] 

我正在尝试对具有相似值的标签属性进行分组。在给定的示例中,我需要将具有相似值的所有标签分组并将其放在另一个数组中。有没有办法得到类似的东西,

var newArray = [{tag:A,count:2}, {tag:B,count:1}]

最佳答案

这就是为什么 Array.reduce存在:

var data = [
    {
        tag:'A',
        others:'Abc'
    },
    {
        tag:'B',
        others:'Bbc'
    },
    {
        tag:'A',
        others:'Acb'
    }
];

var tmp = data.reduce(function (result, item) {
  result[item.tag] = ++result[item.tag] || 1;
  return result;
}, {});

var count = [];
Object.keys(tmp).forEach(function(key) { count.push({ tag: key, count: tmp[key] }); });

console.log(count);
document.write(JSON.stringify(count, null, 4));

关于javascript - 如何获取javascript对象中具有相似值的键的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33031721/

相关文章:

javascript - 无法通过 Javascript 更改表的innerHTML 来添加行

javascript - 具有响应高度的全宽背景

arrays - 将 C 字符数组转换为字符串

javascript - AJAX - OnSubmit 问题

javascript - 数组对象区别javascript angularjs

java - Java中Eratosthenes的多线程分段筛分

javascript - 从嵌套函数访问函数属性

css - Angular Material Design 如何垂直填充列

javascript - 如何访问[object object] AngularJS的数据

javascript - Knockout.js 应用程序中的用户身份验证