JavaScriptで配列を別の配列で指定された順に並べ直す方法

こんにちは、さるまりんです。

今回はJavaScriptの配列の順序をいじってみます。

配列を別の配列で指定した順番に並べ直します。

こんな配列があるとします。

const fruits = [
  {"code":"C001", "name":"apple"},
  {"code":"D003", "name":"banana"},
  {"code":"A005", "name":"grape"},
  {"code":"B007", "name":"kiwi"}
];

これを

const order = ["A0005", "B007", "C001", "D003"];

"code"順に並べ直したいとします。

"name"で言うとgrape, kiwi, apple, bananaの順にしたいということです。

どうしましょう?

こうやって順序を入れ替えることができます。

fruits.sort((a, b) => {
    return order.indexOf(a.code) - order.indexOf(b.code);
});

console.log(fruits);で出力すると↓のように並べ直されていることがわかると思います。

[
  {"code":"A005", "name":"grape"},
  {"code":"B007", "name":"kiwi"},
  {"code":"C001", "name":"apple"},
  {"code":"D003", "name":"banana"}
]

fetch APIで取得したレスポンスにresponse.json()するとJSONの順序が変わってしまったことがあったので、この方法で並べ直しました。

わざわざ並べ直さなくても期待通りの順序で取得できる方法もあるかもしれませんが、今回はこの方法を使いました。

読んでくださってありがとうございました。

それではまた!