将数组按中文首字母排序
好久没来写博客了,最近工作中,碰到了一个按中文排序问题,现在跟大家分享一下。
先上代码:
//排序函数
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在排序。
所以当需要排序的时候只需要传入按什么字段排序,就可以把当前数组按当前字段排序了。