前提・実現したいこと
あるサービスのAPIを叩くと、以下のようなレスポンスが返ってきます。
javascript
1{ 2 "hoge": { 3 "val": "val1", 4 "index": 1 5 }, 6 "piyo": { 7 "val": "val3", 8 "index": 3 9 }, 10 "fuga": { 11 "val": "val5", 12 "index": 5 13 }, 14 "foo": { 15 "val": "val2", 16 "index": 2 17 }, 18 "bar": { 19 "val": "val4", 20 "index": 4 21 } 22}
毎回順番がランダムで取得されるので、indexプロパティの昇順でソートしたいです。
試したこと
配列を用意し、indexの値をそのまま配列の添字に設定することで、ソート自体は出来ました。
ただし、2回ループしないといけないので書き方がダサいのと、keyの値が欲しくなった時に別途考慮しないといけないので、もう少しスマートな書き方があれば教えてください。
javascript
1var apiResult = {...}; // 上記のオブジェクト 2 3// 並び替え後の配列 4var sortedArray = []; 5 6// 並び替える 7for (var key in apiResult) { 8 // sortedArrayの添字にindexプロパティ値を設定 9 sortedArray[apiResult[key]["index"]] = apiResult[key]; 10} 11 12//確認 13console.log(sortedArray); 14// 1:{ val: "val1", index: 1 } 15// 2:{ val: "val2", index: 2 } 16// 3:{ val: "val3", index: 3 } 17// 4:{ val: "val4", index: 4 } 18// 5:{ val: "val5", index: 5 } 19 20// 出力 21for (var i = 1; i < sortedArray.length; i++) { 22 console.log(sortedArray[i].val); 23}

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。