javascript各种排序

98 阅读1分钟

JS按指定顺序排序

let originArr = [
    {
        name:"第一",code:1
    },
    {
        name:"第二",code:2
    },
    {
        name:"第三",code:3
    },
    {
        name:"第四",code:4
    }
]
let arr = [
    {
        name:"第三",code:3
    },
    {
        name:"第二",code:2
    },
    {
        name:"第一",code:1
    },
    {
        name:"第四",code:4                
    }
];
let originArrCode = originArr.map(o => o.code);
let sortFn = function(property){
    return function(a,b){
        let aVal = a[property];
        let bVal = b[property];
        return originArrCode.indexOf(aVal) > originArrCode.indexOf(bVal) ? 1 : -1;
    }
}
arr = arr.sort(sortFn('code'))
console.log(arr);

最终结果

image.png


JS中文排序方法

可以尝试使用方式

var arr2 = arr.sort(function(a,b){
    return a.localeCompare(b)
})

如果中文排序不是我们想要的,可以尝试这样处理

var arr2 = arr.sort(function(a,b){
    return a.localeCompare(b,'zh-CN')
})

JS排序函数使用三目运算写法

this.Array().sort(function(a,b){
    return a > b ? 1 : -1;
})

当返回负数-1,排序认为a在b之前,排序结果为[a,b]; 当返回负数1,排序认为b在a之前,排序结果为[b,a];