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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM