連想配列の値で並び替えをしてみた。
以下のような連想配列を値が大きい順にソートしたかったので、挑戦してみました。
letobj={"Apple":10,"Orange":5,"Banana":12,"Mango":2,"Melon":7,}
キーと値にそれぞれキーをつけた連想配列を格納した配列の作成
letarr=letarr=Object.keys(obj).map((e)=>({key:e,value:obj[e]}));console.log(arr);// [ { key: 'Apple', value: 10 },// { key: 'Orange', value: 5 },// { key: 'Banana', value: 12 },// { key: 'Mango', value: 2 },// { key: 'Melon', value: 7 } ]
※mapに訂正しました。
キー[value]でソート
上記で作成した連想配列を格納した配列をキー[value]でソートします。
arr.sort(function(a,b){if(a.value<b.value)return1;if(a.value>b.value)return-1;return0;});console.log(arr);// [ { key: 'Banana', value: 12 },// { key: 'Apple', value: 10 },// { key: 'Melon', value: 7 },// { key: 'Orange', value: 5 },// { key: 'Mango', value: 2 } ]
いぇーい(^^)
すごく回りくどいけどソートすることができました!