数组对象多字段排序

普通排序

// 普通排序
var arr1 = [1,2,10,7,8,3,20]
// 从小到大
arr1.sort((a, b) => a - b) // 箭头函数单行代码 可省 return
console.log(arr1)  // [1,2,3,7,8,10,20]
// 从大到小
arr1.sort((a, b) => b - a)
console.log(arr1)  // [20,10,8,7,3,2,1]

对象单字段排序

// 对象单字段排序
var arr2 = [
    {
        age: 12,
        id: 20
    },
    {
        age: 12,
        id: 15
    },
    {
        age:8,
        id:20
    }
]
// 根据对象中的字段 age 从小到大排序
arr2.sort((a, b) => a.age - b.age)
console.log(arr2)  // [ { age: 8, id: 20 }, { age: 12, id: 20 }, { age: 12, id: 15 } ]

对象多字段排序

var arr2 = [
    {
        age: 12,
        id: 20
    },
    {
        age: 12,
        id: 15
    },
    {
        age:8,
        id:20
    }
]

// 对象多字段排序
// 先根据age 从小到大 排序  age相同则根据id从小到大排序
arr2.sort((a, b) => {
    if(a.age == b.age){
        return a.id - b.id
    } else {
        return a.age - b.age
    }
})
console.log(arr2)  // [ { age: 8, id: 20 }, { age: 12, id: 15 }, { age: 12, id: 20 } ]

完整代码

// 普通排序
var arr1 = [1,2,10,7,8,3,20]
// 从小到大
arr1.sort((a, b) => a - b) // 箭头函数单行代码 可省 return
console.log(arr1)  // [1,2,3,7,8,10,20]
// 从大到小
arr1.sort((a, b) => b - a)
console.log(arr1)  // [20,10,8,7,3,2,1]


// 对象单字段排序
var arr2 = [
    {
        age: 12,
        id: 20
    },
    {
        age: 12,
        id: 15
    },
    {
        age:8,
        id:20
    }
]
// 根据对象中的字段 age 从小到大排序
arr2.sort((a, b) => a.age - b.age)
console.log(arr2)  // [ { age: 8, id: 20 }, { age: 12, id: 20 }, { age: 12, id: 15 } ]
// 对象多字段排序
// 先根据age 从小到大 排序  age相同则根据id从小到大排序
arr2.sort((a, b) => {
    if(a.age == b.age){
        return a.id - b.id
    } else {
        return a.age - b.age
    }
})
console.log(arr2)  // [ { age: 8, id: 20 }, { age: 12, id: 15 }, { age: 12, id: 20 } ]

结果

 

posted @ 2022-06-14 12:29  smil、梵音  阅读(129)  评论(0编辑  收藏  举报