首页 > 解决方案 > 如何对数组列表项进行分类

问题描述

我有一系列按字母顺序排列的国家/地区。但我必须使用 javascript 按字母顺序对它们进行分类。

示例数组:

[Antigua,Barbados,China,Cuba,Dominican,Jamaica]

预期输出:

A: Antigua
B: Barbados
C: China,Cuba
D: Dominican
J: Jamaica

请问有什么建议吗?

标签: javascriptarraysecmascript-6

解决方案


使用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);


推荐阅读