• ベストアンサー

JSONデータを50音順でソートしたい

下記のようなJSONデータを50音順でソートしたいのですが、 どうすれば良いでしょうか? {  "human": {  "artist": [   {   "link": "goo1.html",   "name": "小田 和正",   "yomi": "おだかずまさ"   },   {   "link": "goo2.html",   "name": "岩佐美咲",   "yomi": "いわさみさき"   },   {   "link": "goo3.html",   "name": "指原莉乃",   "yomi": "しのはらりの"   },  ]  } }

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.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);

re999
質問者

お礼

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

関連するQ&A