对数组进行排序,根据请求的数组,把人名称(工号)按照字母顺序排列,我实际上需要排的顺序只有大写拼音和数字,这里使用的是charCodeAt()将字符转为数字,再排序,如果有大量汉字,汉字部分排序不一定正确
// 数组大概是这样:
let list = [
{
name: "lishi",
age: 16
},
{
name: "zhangsan",
age: 26
},
{
name: "wangwu",
age: 23
},
{
name: "zhangsi",
age: 16
},
{
name: "老李",
age: 33
},
{
name: "wanger",
age: 16
},
{
name: "老赵",
age: 32
},
{
name: "和尚",
age: 25
},
]
// 函数参数1是数组,参数2是按照哪个key进行排序
function sortList(list, key) {
let arr = list.sort(function (a, b) {
for (let index = 0; index < list.length; index++) {
for (let ind = 0; ind < a[key].length; ind++) {
if (a[key].toUpperCase().charCodeAt(ind) !== b[key].toUpperCase().charCodeAt(ind)) {
return a[key].toUpperCase().charCodeAt(ind) - b[key].toUpperCase().charCodeAt(ind)
}
}
}
})
return arr
}
// 这个arr就是处理后的数组(注:这样处理,list变量本身也会一起改掉顺序,如果不想改变原数组,请先深拷贝原来数组,再用这个函数)
let arr = sortList(list, "name")
处理后的效果: