簡體   English   中英

JSON對象在Javascript中排序

[英]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.nameb.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM