javascript對JSON數組進行排序

我們經常回使用到數據格式

var arr=[{num:1},{num:3},{num:2}]

如何根據數組裏面的JSON數據的某個key進行排序

javascript有一個sort()方法,直接通過 arr.sort()進行排序,默認只對數組的值進行排序,然而以上的數組的值卻是個JSON格式的。

我們在看看sort方法的定義:

定義和用法
sort() 方法用於對數組的元素進行排序。
語法
arrayObject.sort(sortby)
參數 描述
sortby 可選。規定排序順序。必須是函數。
返回值
對數組的引用。請注意,數組在原數組上進行排序,不生成副本。
說明
如果調用該方法時沒有使用參數,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(如有必要),以便進行比較。
如果想按照其他標準進行排序,就需要提供比較函數,該函數要比較兩個值,然後返回一個用於說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a 和 b,其返回值如下:
若 a 小於 b,在排序後的數組中 a 應該出現在 b 之前,則返回一個小於 0 的值。
若 a 等於 b,則返回 0。
若 a 大於 b,則返回一個大於 0 的值。

所以重點在於sortby這個參數的規則。根據以上的說明我們可以創建一個規則函數

var arr=[{num:1},{num:3},{num:2}]
function newSort(x,y)
{
return x.num-y.num;
}
arr.sort(newSort);//完成排序,如果JSON裏面的不是數字,則需要在newSort裏面做一下處理
//比如:如果num的值是_1而不是數字1 則 return x.state.substr(1,1)-y.state.substr(1,1);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章