プロが教えるわが家の防犯対策術!

下記のようなJSONデータを50音順でソートしたいのですが、
どうすれば良いでしょうか?

{
 "human": {
 "artist": [
  {
  "link": "goo1.html",
  "name": "小田 和正",
  "yomi": "おだかずまさ"
  },
  {
  "link": "goo2.html",
  "name": "岩佐美咲",
  "yomi": "いわさみさき"
  },
  {
  "link": "goo3.html",
  "name": "指原莉乃",
  "yomi": "しのはらりの"
  },
 ]
 }
}

A 回答 (1件)

javascriptには配列をソートするメソッドがありますので、それを利用すればよろしいかと。




例えば、yomi順にソートする例
(以下の例では、直接並び替えずにtest配列に移し変えてソートしています)

var json = {
 "human": {
  "artist": [
   {
    "link": "goo1.html",
    "name": "小田 和正",
    "yomi": "おだかずまさ"
   },
   {
    "link": "goo2.html",
    "name": "岩佐美咲",
    "yomi": "いわさみさき"
   },
   {
    "link": "goo3.html",
    "name": "指原莉乃",
    "yomi": "しのはらりの"
   }
  ]
 }
};


// 並べ替え用の配列に格納
var i, test = [];
var artist = json.human.artist;
var n = artist.length;

for(i=0; i<n; i++)
 test[i] = [ artist[i].yomi, artist[i] ];


// 並べ替え
test.sort();
for(i=0; i<n; i++)
 test[i] = test[i][1];


// 結果をテスト表示してみる
var t, result = "";
for(i=0; t=test[i++];)
 result += (result?"\n":"") + "link=" + t.link + " / name=" + t.name + " / yomi=" + t.yomi;

alert(result);
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
期待した通りに動作しました。
大変参考になりました!

お礼日時:2012/06/28 00:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!