1. ホーム
  2. javascript

[解決済み] キーの配列と値の配列からオブジェクトを作成する

2023-07-14 03:54:29

質問

2つの配列があります。 newParamArrparamVal .

の値の例 newParamArr の配列の例です。 [ "Name", "Age", "Email" ] .

の値の例 paramVal の配列の例です。 [ "Jon", 15, "[email protected]" ] .

配列のすべての項目を同じオブジェクトに配置するJavaScriptオブジェクトを作成する必要があります。例えば { [newParamArr[0]]: paramVal[0], [newParamArr[1]]: paramVal[1], ... } .

この場合、結果は次のようになるはずです。 { Name: "Jon", "Age": 15, "Email": "[email protected]" } .

2つの配列の長さは常に同じですが、配列の長さは増えたり減ったりすることがあります。ということは newParamArr.length === paramVal.length は常に保持されることになります。

以下の投稿はどれも私の質問に答えるのに役立ちませんでした。

JSONオブジェクトを作成するためのJavascriptの再帰処理

オブジェクトを再帰的にループし、プロパティリストを作成する

どのように解決するのですか?

var keys = ['foo', 'bar', 'baz'];
var values = [11, 22, 33]

var result = {};
keys.forEach((key, i) => result[key] = values[i]);
console.log(result);

あるいは Object.assign

result = Object.assign(...keys.map((k, i) => ({[k]: values[i]})))

またはオブジェクト拡散構文(ES2018)を使用します。

result = keys.reduce((o, k, i) => ({...o, [k]: values[i]}), {})

または Object.fromEntries (ES2019)のようになります。

Object.fromEntries(keys.map((_, i) => [keys[i], values[i]]))

lodashを使っている場合は _.zipObject がありますが、これはまさにこのタイプのものです。