Javascript/ES2015,计算出现次数并将其存储为数组中的对象

标签 javascript ecmascript-6

我正在从 JSON feed 中提取数据,并尝试计算每个名称 (name_class) 出现的次数。

我想返回以下格式的对象数组,其中 count 指名称出现的次数:

myArray = [{name:"John", count: 5}, {name: "Sarah", count: 2}, {name: "Oliver", count: 3}];

到目前为止,我有以下内容,但这不会计算出现的次数,它只是将另一个对象添加到数组中;

   let namestUi = {
    renderNames(names){
        var counter2 = [];
        let namesFound = names.map((name) => {
          let {name_class} = name;

            if(counter2.name == name_class){
              counter2.count++;
            } else { counter2.push({name: name_class, count: 1}); }
        });
        console.log(counter2);
        return namesFound;
      }
    };

这是构建对象数组,但不计算出现的次数。

最佳答案

function count(names){
    // Count occurrences using a map (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)
    let map = new Map();
    for (let name of names) {
        map.set(name, (map.get(name) || 0) + 1);
    }

    // Transform to array of { name, count }
    let result = [];
    for (let [name, count] of map) {
        result.push({name: name, count: count});
    }

    return result;
}

count(["a", "b", "c", "a", "b", "a"])
// [{"name":"a","count":3},{"name":"b","count":2},{"name":"c","count":1}]

关于Javascript/ES2015,计算出现次数并将其存储为数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39986230/

相关文章:

javascript - 检测在javascript中单击了哪个节点

javascript - 期待并集和交集的类型错误

javascript - 如何验证两个输入的值并将其值发布为 json

javascript - 如何一次将一个元素多次添加到数组中

javascript - 尝试从导入的 ES6 模块调用静态方法

javascript - JavaScript 中的生成器和闭包有什么区别?

javascript - ES6 通过 jspm 在 Firefox、Edge、Vivaldi 中出错,但在 Chrome、Opera 中工作

javascript - React 中的 useEffect 在更新存储后不更新组件

javascript - React 构造函数声明 props 崩溃智能感知 vscode

node.js 简单项目 : ReferenceError: <ClassName> is not defined