Javascript代码用于计算对象内两个不同变量的元素组合的出现次数

标签 javascript arrays object javascript-objects

我有一个看起来格式如下的数据

[
    {name: "a", class: "AA"},
    {name: "b", class: "BB"},
    {name: "xx", class: "XY"},
    {name: "a", class: "AA"},
    {name: "b", class: "BB"}
];

我试图减少这个来计算唯一名称和类值组合的出现次数,如下所示

name:"a", class:"AA", count: 2,
name:"b", class: "BB", count: 2,
name:"xx", class:"XY", count:1
我很熟悉如何在Javascript中实现这一点,减少一个变量的元素,但两个不同变量的组合是我需要帮助的地方。抱歉,如果这对你们中的一些人来说似乎很基础。

谢谢

最佳答案

一种方法是迭代数据数组并连接每个对象的名称和类属性,然后将其用作计数器对象的键,增加每个键的值。

var data = [{name:"a", class: "AA"}, {name:"b", class: "BB"}, {name:"xx", class: "XY"}, {name:"a", class:"AA"}, {name: "b", class:"BB"}];
var counter = {};
for (let obj of data) {
    let key = `${obj.name}${obj.class}`;
    if (counter[key] === undefined) {
        counter[key] = 0;
    }
    counter[key]++;
}
console.log(counter);

请记住,示例代码使用 es6 中的功能

关于Javascript代码用于计算对象内两个不同变量的元素组合的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38658214/

相关文章:

c - 传递给 C 中的函数时,char 数组的大小发生变化

java - 指定 ArrayList 的类型

arrays - 扩展 Swift 数组以按类型过滤元素

javascript - 按一次迭代后停止的日期值对 JSON 数组进行排序

javascript - 如何将新对象添加到具有索引号的对象

c# - 尝试将 bool C# 变量传递给 javascript 变量并将其设置为 true

javascript - cakephp 2.x 在 javascript 中执行 Controller

javascript - 去掉CKEditor图片插件中的htmlPreview

php - 多维数组转对象,具体方式

javascript - 在我的情况下,我想推送输入值并将其存储在本地存储 VUEX 的数组中。我已经尝试过但它不起作用