javascript - 如何将 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 中进行这种转换?
解决方案
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)
推荐阅读
- windows - 权限被拒绝:PostgreSQL
- html - 使用 R Markdown 和 HTML 输出将数学表达式显示为非斜体
- asp.net-core - 为什么我在查询我的 Web API 时收到 401 Unauthorized?
- python - ValueError:检查输入时出错:预期dense_3_input的形状为(33,)但得到的数组形状为(34,)
- c++ - lambda 函数中的临时捕获变量 - C++11
- graphql - 使用反应中继时是否需要始终拉动 id 字段
- entity-framework-core - 使用 Automatonymous 时状态机不一致
- javascript - CSS 过渡淡入但不淡出
- flutter - 我的小部件没有出现在屏幕上
- pandas - 有没有一种方法可以平滑多边形并强制所有角度为 90 度?