将数组按中文首字母排序

好久没来写博客了,最近工作中,碰到了一个按中文排序问题,现在跟大家分享一下。
先上代码:

//排序函数
function sortName(arr,eachName){
	arr.forEach(function(item){
		let temp=item[eachName];
		item.sortName=temp;
	});
	let resultArray = arr.sort(
	    function compareFunction(param1, param2) {
	        return param1.sortName.localeCompare(param2.sortName,"zh");
	    }
	);
	return resultArray;
};

arr为传入的需要排序的数组,那么eachName是什么呢?
我这里做这个处理是因为,我们前端通过api向后台拿到的数据,可能里面有name名字,可能有age年龄,可能有time时间,很多很多种类别,我们到底要根据那种来排序呢?这个eachName就是指定根据那个类别来排序的作用。
比如:当前我的数组如下:

 var arr=[
 	{
 		name:"啊啊啊",
 		age:"12",
 		time:"2018-12-17 14:15"
 	},
 	{
 		name:"额额额",
 		age:"11",
 		time:"2018-12-17 14:14"
 	},
 	{
 		name:"呵呵呵",
 		age:"13",
 		time:"2018-12-17 14:12"
 	}
 ]

1.当我函数写成sortName(arr,"name")的时候,他的结果是:

是按name在排序。
2.当我函数写成sortName(arr,"age")的时候,他的结果是:

是按age在排序。
3.当我函数写成sortName(arr,"time")的时候,他的结果是:

是按time在排序。
所以当需要排序的时候只需要传入按什么字段排序,就可以把当前数组按当前字段排序了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值