オブジェクトの分割構文
setup({ name, color})
こういう書き方の時、{}自体は「props」を表し、そのpropsの中にあるnameやcolorといったデータを使うよというのを上のような書き方で表せる。
setupの中ではいちいちprops.nameと書かなくても、単にnameだけで良いので簡単
Array.forEachは非同期にできない
この時は愚直にfor ofで回すしかない
for async (let num of numbers)
的な
Array.sortで配列の要素を昇順/降順に並べ替える
rl.on('close', () => {
for (let [key, value] of prefectureDataMap) {
value.change = value.popu15 / value.popu10;
}
const rankingArray = Array.from(prefectureDataMap).sort((pair1, pair2) => {
return pair2[1].change - pair1[1].change;
});
console.log(rankingArray);
});
close
イベントに設定した無名関数の中身を、以上のように実装します。
const rankingArray = Array.from(prefectureDataMap).sort((pair1, pair2) => {
return pair2[1].change - pair1[1].change;
});
まず Array.from(prefectureDataMap)
の部分で、連想配列を普通の配列に変換する処理をおこなっています。
更に、Array の sort
関数を呼んで無名関数を渡しています。sort
に対して渡すこの関数は比較関数と言い、これによって並び替えをするルールを決めることができます。
比較関数は 2 つの引数を受けとって、
前者の引数 pair1 を 後者の引数 pair2 より前にしたいときは、負の整数、
pair2 を pair1 より前にしたいときは、正の整数、
pair1 と pair2 の並びをそのままにしたいときは 0 を返す必要があります。
ここでは変化率の降順に並び替えを行いたいので、 pair2 が pair1 より大きかった場合、pair2 を pair1 より前にする必要があります。