数组sort方法的使用

sort()方法是数组自带的一种排序方法,数组在原数组上进行排序,不生成副本。

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

1.当元素为字符串时

将元素从字符串从第一位开始比较,第一位相同时比较后一位

let arr = ['cb', 'a', 'g', 'cy']
arr.sort()
console.log(arr) // [ 'a', 'cb', 'cy', 'g']

2.当元素为数字时

默认将数字元素当做字符串进行比较,先比较第一位,第一位相同时再比较后一位

let arr = [20, 13, 11, 8, 0, 11]
arr.sort()
console.log(arr) // [0, 11, 11, 13, 20, 8]

3.如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字

升序排序

let arr = [20,13,11,8,0,11]
arr.sort(function(a,b){ //可以将a理解成newValue, b理解成oldValue
    return a-b
})
console.log(arr) // [0,8,11,11,13,20]
//a,b表示相邻的两个元素
//若返回值>0,数组元素将按升序排序
//若返回值<0,数组元素将按降序排序

降序排序

let arr = [20,13,11,8,0,11]
arr.sort(function(a,b){ //可以将a理解成newValue, b理解成oldValue
    return b-a
})
console.log(arr) // [20,13,11,11,8,0]
//a,b表示相邻的两个元素
//若返回值>0,数组元素将按升序排序
//若返回值<0,数组元素将按降序排序

也可以根据对象的某个属性进行排序

let obj = [
   {name:'小明',age:12},
   {name:'小红',age:10},
   {name:'小花',age:16},
   {name:'小黑',age:14}
]
obj.sort(function(a,b){
    return a.age-b.age
})
console.log(obj) // 根据年龄升序排序

 

--------------------------------------------------------------------------------------------------------------------------------------

let obj = [
   {name:'小明',age:12},
   {name:'小红',age:10},
   {name:'小花',age:16},
   {name:'小黑',age:14}
]
obj.sort(function(a,b){
    return b.age-a.age
})
console.log(obj) // 根据年龄降序排序

 

posted @ 2020-10-26 15:32  棠樾  阅读(1734)  评论(0编辑  收藏  举报