1. 程式人生 > 其它 >js陣列sort()方法

js陣列sort()方法

定義與用法:
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()方法的學習和總結,希望對大家也有所幫助~ 感謝閱讀