14

次のような形式の JSON があります。

places =[
     {
      "city":"Los Angeles",
      "country":"USA",
     },
     {
      "city":"Boston",
      "country":"USA",
     },
     {
      "city":"Chicago",
      "country":"USA",
     },
] 

など...

これを都市別にアルファベット順に並べ替えようとしています が、そうするのに問題があります。私の問題の根本は、文字の順序 (対数字) を決定しているように思われると思います。私は簡単に試しました:

    places.sort(function(a,b) {
     return(a.city) - (b.customInfo.city);
    });

それでも、この減算は何をすべきかわかりません。誰かが私を助けることができますか?

4

2 に答える 2

41

残念ながら、JavaScript には、sort() に適切な値を返す一般的な「比較」関数はありません。比較演算子を使用する compareStrings 関数を作成し、それを sort 関数で使用します。

function compareStrings(a, b) {
  // Assuming you want case-insensitive comparison
  a = a.toLowerCase();
  b = b.toLowerCase();

  return (a < b) ? -1 : (a > b) ? 1 : 0;
}

places.sort(function(a, b) {
  return compareStrings(a.city, b.city);
})
于 2013-10-08T22:01:20.030 に答える