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: "加拿大" // }] //}]

浙公网安备 33010602011771号