js中對乙個物件陣列按照物件某個屬性進行排序

2021-09-25 11:59:23 字數 1336 閱讀 2816

我們現在有一組「學生」物件,包含「名字,年齡,分數」等屬性,現在要求乙個演算法,把這些物件放在乙個陣列裡,可以實現按照年齡或者分數對這些物件進行排序。

var sdts =[,

,]

那麼考點在哪呢,實際上在於陣列物件的sort方法

array.sort(fun)

fun是乙個函式,排序根據這個函式返回值來進行判斷,如果返回值小於0表示兩個元素不需要交換位置,1表示要用互動位置,0表示相等,實際上<=0等效。

sort方法有兩個注意點:

會操作原始陣列,經過操作後原始陣列發生變化

預設排序按照字元編碼排序,例如,我們有下面的乙個例子:

var arr1 =[14

,23,11

,6,87

,67];

arr1.

sort()

;// [11,14,23,6,67,87] 按字元而非數值排序

想要完成值比較排序,必須傳入sort引數(函式)進行規制制定:

function

sortrule

(a,b)

arr1.

sort

(sortrule)

;//[6, 11, 14, 23, 67, 87]

但是,如果遇到我們上面題目中一樣,每個元素並非是陣列,而是物件,那應該怎麼去處理呢?其實道理是一樣的,只不過我們要在規制函式中重新編寫乙個適合物件的規制:

functon sortrule

(a,b)

上面的函式只能對age進行排序,我們再優化一下:

//這樣就能通過傳不同的引數而有選擇性的排序了

function

sortby

(field)

}arr1.

sort

(sortby

("score"))

;arr1.

sort

(sortby

("age"))

;

在這種想法下面,我們還可以做乙個設想:假如score相等的情況下,我們是否可以按照年齡的大小排序輸出?

function

sortby

(field1,field2)

}arr1.

sort

(sortby

("score"

,"age"))

;

沒錯,其實也就這麼簡單。

JS中物件陣列按照物件的某個屬性進行排序

js中的陣列中的物件排序很簡單,根據物件的屬性指定排序規則即可,如果出問題就仔細檢查一下中間資料 functon sortrule a,b 可以在原陣列排序函式的基礎上再套乙個函式來傳欄位引數,原排序函式作為這個函式的返回值返回 function sortby props arr1.sort sor...

js中複製乙個物件方法(轉殖物件)

js中複製乙個物件方法 轉殖物件 平時我們針對物件,還有其他基本型別常常使用複製,對於 這種物件,複製之後的只是多了乙個引用,實際上還是指向原物件。1.使用將轉化為json字串,然後再轉回去。存在的問題 似乎對於複雜的會出問題,比如物件裡面存在物件,就會出問題。2.遞迴物件來轉殖,存在的問題 如果有...

Js中如何判斷乙個物件為陣列型別

在說明如何判斷乙個物件為陣列型別前,我們先鞏固下js的資料型別,js一共有六大資料型別 number string object boolean null undefined。js的陣列是無型別的 陣列元素可以是任意型別,並且同乙個陣列中的不同元素也可能有不同的型別。陣列的元素可以是物件或其他陣列,...