javascript - 如何对数组列表项进行分类
问题描述
我有一系列按字母顺序排列的国家/地区。但我必须使用 javascript 按字母顺序对它们进行分类。
示例数组:
[Antigua,Barbados,China,Cuba,Dominican,Jamaica]
预期输出:
A: Antigua
B: Barbados
C: China,Cuba
D: Dominican
J: Jamaica
请问有什么建议吗?
解决方案
使用Array#reduce
它将返回一个类型为 的对象{[index: string]: Array<string>}
,其中索引表示第一个字母,并且该数组包含以该字母开头的所有国家/地区。
var list = ["Antigua", "Barbados", "China", "Cuba", "Dominican", "Jamaica"];
var result = list.reduce(function(result, item) {
var key = item[0]; // The key is the first letter of each country
result[key] = result[key] || []; // create the array if it doesn't exist
result[key].push(item); // add the element to the array
return result;
}, {});
console.log("Object form:");
console.log(result);
var textResult = Object.entries(result).map(function([key, list]) {
return `${key}: ${list.join()}`
}).join("\n\r");
console.log("Text form:");
console.log(textResult);
推荐阅读
- java - 为 TextView 赋值时为空值
- sql - 如何将事务数据与客户数据表连接起来并在 SQL 中执行基于案例的操作
- python - Python循环参数长度并将所有字符串保存在一个变量中
- java - 如何在 Hibernate 5 中从 xml 创建表?
- kendo-ui - Kendo UI 自定义 Kendo 确认 OK 按钮
- laravel - 用户注销时如何删除所有刷新令牌?另外,如果他们忘记注销并且下次登录并注销?
- php - 拖尾 html 文本(使用 PHP)
- textmate - 如何在 TextMate(C 包)中禁用自动缩进?
- mongodb - MongoDB 3.6 版本的性能问题
- javascript - 如何对齐具有不同列数的两行