JS根据数组的一个属性对数组进行排序

对数组进行排序,根据请求的数组,把人名称(工号)按照字母顺序排列,我实际上需要排的顺序只有大写拼音和数字,这里使用的是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")

处理后的效果:

JS根据数组的一个属性对数组进行排序

 

上一篇:自动化配置主机网卡IP地址


下一篇:app开发公司排名哪家强?看App Annie给出的答案