js对象排序练习

例1:

将result属性里的对象按id大小,从小到大排序:

 var obj = {
    result:[
      {id:1,name:'中国银行'},
      {id:3,name:'北京银行'},
      {id:2,name:'河北银行'},
      {id:10,name:'保定银行'},
      {id:7,name:'涞水银行'}
    ]
 } ;

obj.result.sort((a,b)=>a.id-b.id);
console.log(obj);

输出:
在这里插入图片描述

例2:

将obj对象的属性名,按字典顺序排序:

var obj = {a:2,c:1,b:3};

var arr=Object.keys(obj).sort();
var result = {};
arr.map(m=>{
	result[m] = obj[m];
});
console.log(result);

输出:
在这里插入图片描述

例3:

1、转变data数据的结构(要求如下):

let data = { "Afghanistan": "阿富汗", "China": "中国", "Angola": "安哥拉", "Canada": "加拿大", "Brazil": "巴西"};

//将data转换为下面的格式

{ 	
	A:[{en:'Afghanistan',cn:'阿富汗'},{en:'Angola',cn:'安哥拉'}],
	C:[{en:'China',cn:'中国'},{en:'Canada',cn:'加拿大'}],
	B:[{en:'Brazil',cn:'巴西'}]
}

代码:

let data = { "Afghanistan": "阿富汗", "China": "中国", "Angola": "安哥拉", "Canada": "加拿大", "Brazil": "巴西"}; 

let obj = {}; // 处理过后的数据对象 
let temps = []; 
for(let key in data) { 
	let index = key.charAt(0).toUpperCase(); // 根据key值的第一个字母分组,并且转换成大写 
	temps = obj[index] || []; // 如果map里面有这个key了,就取,没有就是空数组 
	temps.push({ en: key, cn: data[key] });
	obj[index] = temps; 
} 
console.log(obj);

若想直接把输出结果改成下面这样:

let data = { "Afghanistan": "阿富汗", "China": "中国", "Angola": "安哥拉", "Canada": "加拿大", "Brazil": "巴西"};

//将data转换为下面的格式
{ 	
	A:[{en:'Afghanistan',cn:'阿富汗'},{en:'Angola',cn:'安哥拉'}],
	B:[{en:'Brazil',cn:'巴西'}]
	C:[{en:'China',cn:'中国'},{en:'Canada',cn:'加拿大'}],
}

代码:

var obj = {};
for(let key in data){
	var index = key.charAt(0).toUpperCase();
	if(obj.hasOwnProperty(index)){
		obj[index].push({en:key,cn:data[key]});
	}else{
		obj[index] = [{en:key,cn:data[key]}];
	}
}
console.log(obj);

2、将1得到的结果数据再转换为如下格式:
在这里插入图片描述

let list = []; 
for(let gkey in obj) { 
	list.push({ gkey: gkey, countrys: map[gkey] }) 
} 
console.log(list);

3、将2得到的结果在排序:

list = list.sort((li1, li2)=> 
	li1.gkey.charCodeAt(0) - li2.gkey.charCodeAt(0)
); 
console.log(list);

输出:
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值