首页 > 解决方案 > 如何将 javascript 字符串数组减少为唯一值但保留重复次数?

问题描述

我有一个包含许多字符串的数组,比如这个:

["e", "e", "e", "e", "a", "e", "e", "a", "e", "e", "e", "e", "e", "o", "a", "e", "r", "e", "e", "e", "o", "e", "u"]

现在我想减少这个数组,所以它只包含唯一的字符串。同时,我想计算重复次数并(最好)计算一个百分比,该百分比显示重复次数除以字符串总数。

我在想一个看起来像这样的最终结果:

[
    {
        letter: "e",
        duplicates: 16,
        percentage: 0.695652173913043
    },
    {
        letter: "a",
        duplicates: 3,
        percentage: 0.130434782608696
    },
    {
        letter: "o",
        duplicates: 2,
        percentage: 0.08695652173913
    },
    {
        letter: "r"
        duplicates: 1,
        percentage: 0.043478260869565
    },
    {
        letter: "u",
        duplicates: 1,
        percentage: 0.043478260869565
    }
]

我将如何在 JavaScript/ES6 中进行这种转换?

标签: javascriptarraysecmascript-6reduce

解决方案


let array = ["e", "e", "e", "e", "a", "e", "e", "a", "e", "e", "e", "e", "e", "o", "a", "e", "r", "e", "e", "e", "o", "e", "u"]


let result = [...new Set(array)].map(e =>({letter:e,
duplicates:array.filter(n => n===e).length,
percentage:array.filter(n => n===e).length/array.length}))


console.log(result)


推荐阅读