js陣列sort()方法
阿新 • • 發佈:2021-08-19
定義與用法:
sort() 方法用於對陣列的元素進行排序,並返回陣列。預設排序順序是根據字串UniCode碼。
語法:
arrayObject.sort(sortby)
引數:
sortby 可選,用來規定排序的順序,但必須是函式。
例一:
在js中我們可以對陣列元素使用sort方法進行排序,如下:
var arr =[0,1,56,23,34,3] arr.sort() console.log(arr) //列印[0, 1, 23, 3, 34, 56]
解釋:從案例中發現得到的結果並不是我們想要的,為什麼呢?? 原因是在使用sort排序的時候它總會使用第一個字元的ASCII值來進行比較排序,所以就出現了這個結果,所以下面做了下改進分升序和降序的兩種方式。程式碼改進如下:
//升序 var arr =[0,1,56,23,34,3] function sortNumber(a,b){ return a-b; } arr.sort(sortNumber) console.log(arr)//列印[0, 1, 3, 23, 34, 56] //降序 var arr =[0,1,56,23,34,3] function sortNumber(a,b){ return b-a; } arr.sort(sortNumber) console.log(arr)//列印[56, 34, 23, 3, 1, 0]
例二:
按照陣列物件中某個屬性值進行排序
const arr2 = [ { id:10, flag: true }, { id: 5, flag: false }, { id: 6, flag: true }, { id: 9, flag: false } ]; const r = arr2.sort((a, b) => b.flag - a.flag);//如果這裡想根據id進行排序就改成.id console.log(r); // [ // { id: 10, flag: true }, // { id: 6, flag: true }, // { id: 5, flag: false }, // { id: 9, flag: false } // ]
例三:
1.去除name相同的物件
2.且保留的是建立時間最早的物件
這裡看一道題目,是一段大佬寫的程式碼,寫進總結裡以供學習參考~
題目: var arr=[ { name: '玉骨遙寒薇結海報', created_at: '2021-06-04 04:54:06.164', }, { name: '玉骨遙寒薇結海報', created_at: '2021-06-04 04:52:49.753', }, { name: '玉骨遙寒薇結海報', created_at: '2021-06-04 05:02:02.398', }, { name: '公交車拋錨警民攜手推車為考生開路', created_at: '2021-06-04 04:52:40.588', }, { name: '公交車拋錨警民攜手推車為考生開路', created_at: '2021-06-04 05:07:21.587', }, ]
程式碼如下:
arr.reduce(function(s,v){ var itemIdx = s.findIndex(v1=>v1.name==v.name); if(itemIdx == -1){ s.push(v) }else{ var item = s[itemIdx]; if(v.created_at < item.created_at){ s.splice(itemIdx,1,v) } } return s },[])
列印結果:
以上是有關對sort()方法的學習和總結,希望對大家也有所幫助~ 感謝閱讀