配列からオブジェクトへ変換
配列からオブジェクトに変換する方法(キーは連番)の備忘録。
1. reduce()
メソッドを用いる
let array1 = [111, 222, 333, 444, 555, 666];
let obj = array1.reduce((acc, value, index) => {
// acc は蓄積されるオブジェクト
// value は現在の要素の値
// index は現在のインデックス
// スプレッド演算子を使用して、acc を展開し、新しいオブジェクトを作成し、新しいキーと値を追加する
return { ...acc, ['key' + index]: value };
}, {} );
console.log(obj);
// { key0: 111, key1: 222, key2: 333, key3: 444, key4: 555, key5: 666 }
ChatGPTによる説明
説明
このコードは、与えられた配列 array1
をオブジェクトに変換するために、Array.prototype.reduce()
メソッドを使用しています。reduce()
メソッドは、配列を単一の値(この場合はオブジェクト)にまとめるための高階関数です。
具体的には、以下の手順で動作します:
-
reduce()
メソッドの初期値として、空のオブジェクト{}
が与えられます。これがacc
(蓄積値)に初期設定されます - 配列
array1
の各要素に対して、指定されたコールバック関数が実行されます - コールバック関数は、蓄積値
acc
、現在の要素の値value
、および現在のインデックスindex
を引数として取ります - コールバック関数では、スプレッド演算子
{...acc}
を使用してacc
を展開し、新しいオブジェクトを作成します。また、新しいキーと値のペアを追加します。ここでは、['key' + index]
をキーとして、value
を値として追加しています -
reduce()
メソッドは、次のループで使用する蓄積値として、新しく作成されたオブジェクトを返します - 最後に、
reduce()
メソッドが完了した後、最終的なオブジェクトがobj
変数に格納されます
このコードを実行すると、array1
の各要素が obj
オブジェクトにキーとしてマッピングされ、インデックスに基づいたキーが作成されます。
2. Object.fromEntries()
を用いる
let array1 = [111, 222, 333, 444, 555, 666];
let obj = Object.fromEntries(array1.map((value, index) => ['key' + index, value]))
console.log(obj);