Panda Noir

JavaScript の限界を究めるブログです。

好きな順番で配列をソートする

世の中には辞書順という便利なものがあります。しかし、意外とオリジナルの順序を作りソートするプログラムは見かけません。

例えば麻雀では「東」「南」「西」「北」という4つの牌があります。これら4種類のみからなる配列を「東南西北」という順にソートすることを考えます。

結論はこうです。

const arr = ['東', '西', '東', '北', '西', '南'];
arr.sort((a, b) => {
    return '東南西北'.indexOf(a) -'東南西北'.indexOf(b);
});
// arr: ["東", "東", "南", "西", "西", "北"]

「4種類のみからなる」と仮定してあるので、indexOfがマイナスになることはありません。

みなさんも自分のオリジナル辞書順作りましょう!