【问题标题】:How to categorize array list items [duplicate]如何对数组列表项进行分类[重复]
【发布时间】:2020-02-18 15:44:28
【问题描述】:

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

示例数组:

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

预期输出:

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

有什么建议吗?

【问题讨论】:

  • 请更新您迄今为止为实现这一目标所做的尝试。这样您就可以获得更适合您要求的答案。

标签: javascript arrays ecmascript-6


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你可以这样做:

    let sourceData = ['Antigua','Barbados','China','Cuba','Dominican','Jamaica'];
    const result = sourceData.reduce((a, c) => {
      let key = c.substring(0, 1);
      a[key] = a[key] || [];
      a[key].push(c);
      return a;
    }, {})
    
    console.log(result);

    【讨论】:

      【解决方案3】:

      var obj = {}
      
      var arr = ["Antigua","Barbados","China","Cuba","Dominican","Jamaica"]
      
      
      arr.forEach(x => {
      if (!obj[x[0]]) obj[x[0]] = [];
      obj[x[0]] = obj[x[0]].concat([x]);
      });
      
      console.log(obj);
      
      Object.keys(obj).forEach(x => console.log(`${x}: ${obj[x]}`))

      【讨论】:

      • China怎么了?
      • 对上面的代码添加了修复,它现在可以工作了......感谢您指出
      • var names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"]; var uniqueNames = []; $.each(names, function(i, el){ if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el); });
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2021-12-23
      相关资源
      最近更新 更多