「js」聊聊数组sort()方法,sort的具体使用

172 阅读1分钟

定义:sort() 方法用于对数组的元素进行排序。(会改变原数组)

使用方法

1、必须写两个形参。

2、看返回值,当返回值为负数时,前面的数放在前面;当返回值为正数时,后面的数放在前面;为0则不动。

举例

  • 常规用法
let arr = [2,34,21,54,1,3,1];
arr.sort(function(a,b) {
    if(a > b) {
        return 1;
    }else{
        return -1;
    }
})
console.log(arr) //  [1, 1, 2, 3, 21, 34, 54]
  • 常规用法简化
let arr = [2,34,21,54,1,3,1];
arr.sort(function(a,b) {
    if(a > b) {
        return a - b;
    }else{
        return a - b;
    }
})
  • 再次简化
let arr = [2,34,21,54,1,3,1];
arr.sort(function(a,b) {
    return a - b; 
})

结论:a-b升序;b-a降序

引申用法

  • 让一个有序数组乱序排列
let arr = [1,,2,3,4,5,6];
arr.sort(function(a,b) {
    return Math.random() -0.5
})
  • 对象中的age排序
let obj1 = {
    name: 'vivi',
    age: 13
}
let obj2 = {
    name: 'kiki',
    age: 27
 }
let obj3 = {
    name: 'lucy',
    age: 12
}

let objArr = [obj1,obj2,obj3]
objArr.sort(function(a,b) {
    if(a.age > b.age) {
        return 1
    }else{
        return -1
    }
})

简化后:

objArr.sort(function(a,b) {
    return a.age - b.age
})
  • 给数组中的字符串排序
let strArr = ['ad','sddess','adde','adw','defdcsaa'];
strArr.sort(function(a,b) {
    return a.length - b.length
})