Quantcast
Channel: ダッシュで奪取
Viewing all articles
Browse latest Browse all 37

【JavaScript】配列の値を任意の順番で並び替えたい

$
0
0

やりたいこと

  • 以下のポケモン配列を、全国図鑑順に並び替えたい
    • フシギダネ → ヒトカゲ → ゼニガメ → ピカチュウの順が正解
const pokemons = ["ヒトカゲ", "ゼニガメ", "フシギダネ", "ピカチュウ"];

NG

  • とりあえず sort()してみた
    • Unicode コードポイント順に並んでいるらしい
    • 今回の対象はカタカナだけなので、結果50音順で並んだ
const pokemons = ["ヒトカゲ", "ゼニガメ", "フシギダネ", "ピカチュウ"];

pokemons.sort();
console.log(pokemons); // [ 'ゼニガメ', 'ヒトカゲ', 'ピカチュウ', 'フシギダネ' ] フシギダネが最初に来てほしいのでNG

OK

  • 並び順マスタ的なものを作る orderList
  • Array.prototype.sort() - JavaScript | MDNの「compareFn(a, b) の返値」表より、(a, b)の結果が正の数である場合、a と b の順番が入れ替わる
const orderList = ["フシギダネ", "フシギソウ", "フシギバナ", "ヒトカゲ", "リザード", "リザードン", "ゼニガメ", "カメール", "カメックス", "ピカチュウ", "ライチュウ"];
const pokemons = ["ヒトカゲ", "ゼニガメ", "フシギダネ", "ピカチュウ"];

pokemons.sort((a, b) => 
    orderList.indexOf(a) - orderList.indexOf(b)
);

console.log(pokemons); // [ 'フシギダネ', 'ヒトカゲ', 'ゼニガメ', 'ピカチュウ' ]

参考URL


Viewing all articles
Browse latest Browse all 37

Trending Articles