我們現在有一組「學生」物件,包含「名字,年齡,分數」等屬性,現在要求乙個演算法,把這些物件放在乙個陣列裡,可以實現按照年齡或者分數對這些物件進行排序。
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的陣列是無型別的 陣列元素可以是任意型別,並且同乙個陣列中的不同元素也可能有不同的型別。陣列的元素可以是物件或其他陣列,...