1. 程式人生 > 實用技巧 >陣列sort方法的使用

陣列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) // 根據年齡降序排序