0

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 を取得しています。

4

3 に答える 3

3

ハッシュをソートすることはできません。配列でなければなりません。あなたができることは、配列への各 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 によって各オブジェクトに個別にアクセスできます。

于 2012-06-04T17:55:50.767 に答える
0

私はあなたがこれを書くつもりだったと思います:

jobj=$(jobj).sort(function(a,b){  
     return a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1;  
});
于 2012-06-04T17:53:15.017 に答える
0

これには 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/

于 2012-06-04T17:55:46.420 に答える