陣列sort方法的使用
阿新 • • 發佈:2020-10-26
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) // 根據年齡降序排序