reduceメソッドをつかって、keyとvalueを交換した新しいオブジェクトを生成し、1つのオブジェクトに結合していきます。
以下の例ではオブジェクト”prefecture”に対してkeyとvalueを交換しています。
const prefecture = { Saitama : 11, Chiba : 12, Tokyo : 13, Kanagawa : 14 } const keys = Object.keys(prefecture); const exchangeObj = keys.reduce( (obj, key) => Object.assign(obj, { [prefecture[key]]: key }) ,{}); console.log(exchangeObj); // {11: "Saitama", 12: "Chiba", 13: "Tokyo", 14: "Kanagawa"}
keyとvalueを交換したオブジェクトを生成する
肝となるのは”{ [prefecture[key]]: key }”の部分です。ここでkeyとvalueを交換した新しいオブジェクトを生成しています。
オブジェクトのkeyに変数を指定するには、変数名を”[]”で囲います。 例えばこんな感じ。
const newKey = "新しいキー"; console.log( { [newKey] : 1} ) // {新しいキー: 1}
変数に格納された値がオブジェクトのkeyになっています。
複数のオブジェクトを結合する
オブジェクト同士の結合にはObject.assignを使用しています。
ES2018からはスプレッド構文を使ってオブジェクト同士を結合することができます。
const exchangeObj = keys.reduce( (obj, key) => ({ ...obj, [prefecture[key]]: key }) ,{}); //ES2018