javascript - 如何计算数组中相同项目的数量并将计数分配给对象中的特定键?

标签 javascript arrays ecmascript-6

我需要转换一个数组,如下所示:

["Cats", "Cats", "Dogs", "Dogs", "Dogs"]

以下形式:

[
    { x: "Cats", y: 35 },
    { x: "Dogs", y: 40 },
    { x: "Birds", y: 55 },
]

哪里y表示数组中相同元素的个数。

最佳答案

强调使用基于 map 的高效、现代的方法,该方法也可以在副本中以类似的形式找到:

const getCounts = iterable => {
    const counts = new Map();

    for (const x of iterable) {
        counts.set(x, (counts.get(x) ?? 0) + 1);  // use || for ES6 compat
    }

    return counts;
};

Array.from(
    getCounts(["Cats", "Cats", "Dogs", "Dogs", "Dogs"]),
    ([x, y]) => ({x, y})
)

关于javascript - 如何计算数组中相同项目的数量并将计数分配给对象中的特定键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60749934/

相关文章:

javascript - 从 ES6 类过滤属性

node.js - 使用 Node Traceur 编译 ecma 脚本 6

javascript - AngularJS/Firebase : $scope data not rendering in view

javascript - django select2 插件中所有选定项目的列表

javascript - Ajax 密集型页面 : reuse the same XMLHttpRequest object or create new one every time?

ruby - 删除元素时,Ruby 数组的内部行为如何?

javascript - 将事件绑定(bind)到 Web 组件中的模板文字的最便捷方法是什么?

javascript - 从 Mongo 的输出和嵌套元素中删除 _id

php - 在 php 中获取给定月份和年份的按周分隔的日期数组

在 C 中使用函数更改字符串数组内容