[英]JSON object sort in Javascript
我有一個由JSON.parse返回的JSON對象jobj = JSON.parse(jsnstr)數組,我希望按其名稱對其進行排序。 我用過
jobj=$(jobj).sort(sortfunction);
function sortfunction(a,b){
return a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1;
};
但這沒有解決,反而我得到未定義的obj任何幫助嗎?
您無法對哈希進行排序; 它必須是一個數組。 您可以做的是設置每個a.name值對數組的引用,然后使用自定義函數對該數組進行排序,就像您在那里一樣。
json = JSON.parse(...);
var refs = [];
for(var i in json) {
var name = i.name;
refs.push({
name : name.toLowerCase(),
object : i
});
}
var sorted = refs.sort(function(a,b) {
return a.name > b.name;
});
現在,您的refs數組中的所有內容都已排序,您可以通過sorted [index] .object單獨訪問每個對象。
我想你打算寫這個:
jobj=$(jobj).sort(function(a,b){
return a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1;
});
您不需要jQuery。 同樣, sort
修改原始數組。 因此,如果jobj
是一個數組,則可以執行以下操作:
jobj.sort(sortfunction);
您可能還需要考慮a.name
和b.name
相同的情況:
function sortfunction(a,b){
var aSort = a.name.toLowerCase(),
bSort = b.name.toLowerCase();
if(aSort === bSort) return 0;
return aSort > bSort ? 1 : -1;
}
演示: http : //jsfiddle.net/xmmPL/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.