js数据如何分组排序?

{"Afghanistan": "阿富汗","Angola": "安哥拉","Argentina": "阿根廷","Armenia": "亚美尼亚","Belgium": "比利时","Bulgaria": "保加利亚","Belarus": "白俄罗斯","Bermuda": "百慕大","Brazil": "巴西","Bhutan": "不丹","Canada": "加拿大","China": "中国",}

第一步

把上面的obj赋值一个变量,如let data = [obj],这里的obj就是上面的数据

let data = { "Afghanistan": "阿富汗", "China": "中国", "Angola": "安哥拉", "Canada": "加拿大", "Brazil": "巴西"};
let map = {}; // 处理过后的数据对象
let temps = []; // 临时变量
for(let key in data) {
  let ekey = key.charAt(0).toUpperCase(); // 根据key值的第一个字母分组,并且转换成大写
  temps = map[ekey] || []; // 如果map里面有这个key了,就取,没有就是空数组
  temps.push({
    en: key,
    cn: data[key]
    });
  map[ekey] = temps;
}
console.log(map);
// 打印看看数据
// {
//   A: [{ 
//       en: 'Afghanistan',
//       cn: '阿富汗'
//   },{ 
//       en: 'Angola',
//       cn: '安哥拉'
//     }],
//   C: [{ 
//     en: 'China', 
//     cn: '中国'
//   },{
//     en: 'Canada',
//     cn: '加拿大'
//   }],
//   B: [{
//     en: 'Brazil', 
//     cn: '巴西'
//   }]
// }

第二步

let list = [];
for(let gkey in map) {
  list.push({
    gkey: gkey,
    countrys: map[gkey]
  })
}
console.log(list);
//[{
//  gkey: "A",
//  countrys: [{
//    en: "Afghanistan",
//    cn: "阿富汗"
//  }, {
//    en: "Angola",
//    cn: "安哥拉"
//  }]
//}, {
//  gkey: "C",
//  countrys: [{
//    en: "China",
//    cn: "中国"
//  }, {
//    en: "Canada",
//    cn: "加拿大"
//  }]
//}, {
//  gkey: "B",
//  countrys: [{
//    en: "Brazil",
//    cn: "巴西"
//  }]
//}]

第三步

list = list.sort((li1, li2)=> li1.gkey.charCodeAt(0) - li2.gkey.charCodeAt(0));
console.log(list);
//[{
//  gkey: "A",
//  countrys: [{
//    en: "Afghanistan",
//    cn: "阿富汗"
//  }, {
//    en: "Angola",
//    cn: "安哥拉"
//  }]
//}, {
//  gkey: "B",
//  countrys: [{
//    en: "Brazil",
//    cn: "巴西"
//  }]
//}, {
//  gkey: "C",
//  countrys: [{
//    en: "China",
//    cn: "中国"
//  }, {
//    en: "Canada",
//    cn: "加拿大"
//  }]
//}]

转载自:【https://cloud.tencent.com/developer/article/1498698

posted @ 2020-05-27 17:20  动灵  阅读(1072)  评论(0)    收藏  举报