javascript - 对 JavaScript 数组中的相同值进行分组
问题描述
let array = ['a', 'a', 'a', 'b', 'b', 'c'];
我想对数组中的双精度值进行分组,以获得如下结果:
结果:(
['3a, 2b, c']
或类似的东西)
任何想法?
解决方案
您可以使用.reduce()
和.map()
方法:
let array = ['a', 'a', 'a', 'b', 'b', 'c'];
let result = Object.entries(
array.reduce((r, c) => (r[c] = (r[c] || 0) + 1, r) , {})
).map(([k, v]) => v == 1 ? k : v + k);
console.log(result);
Map
如果您需要特定顺序的项目,您也可以使用:
let array = ['a', 'a', 'a', 'b', 'b', 'c'];
let result = (((arr, map) => {
arr.forEach(s => map.set(s, (map.get(s) || 0) + 1));
return [...map.entries()].map(([k, v]) => v == 1 ? k : v + k);
})(array, new Map()));
console.log(result);
推荐阅读
- ios - 当应用程序在 Swift 中处于后台或非活动状态时,如何搜索 BLE/蓝牙设备?
- sql - 为什么 SQL 子查询在 SUM 函数中不起作用?
- python - 打印匹配多个键的值
- matlab - 在 MATLAB 中使用 Cygwin
- django - 无法从 Django 中的查询集中访问对象的用户名
- javascript - React 共享计数器增量
- python - 我可以为 ELM 分类器实现迭代训练循环吗?
- javascript - 如何从 angular cli 中删除纱线。我想用 npm 安装包
- google-admin-sdk - G Suite Directory API:从 SAML 不记名断言中获取访问令牌
- sql - SQL Athena 获取过去 12 个月的数据