JavaScript での共有キーを使用した配列内のオブジェクトのマージ
問題ステートメント
配列を考慮するオブジェクトの場合、各オブジェクトには「name」キーがあります。同じ「名前」を持つオブジェクトは値を共有します。このタスクは、同じ「名前」を持つすべてのオブジェクトの「値」キーをマージして配列を再編成することです。
解決策
配列内のオブジェクトをマージするには同じ「name」キーの場合は、次のアプローチを使用できます。
<code class="javascript">var array = [{ name: "foo1", value: "val1" }, { name: "foo1", value: ["val2", "val3"] }, { name: "foo2", value: "val4" }]; var output = []; array.forEach(function(item) { var existing = output.filter(function(v, i) { return v.name == item.name; }); if (existing.length) { var existingIndex = output.indexOf(existing[0]); output[existingIndex].value = output[existingIndex].value.concat(item.value); } else { if (typeof item.value == 'string') item.value = [item.value]; output.push(item); } }); console.dir(output);</code>
このソリューションは、入力配列を反復処理し、同じ「name」キーを持つ既存のオブジェクトを検索し、その「値」を追加します。現在のオブジェクトを既存のオブジェクトの「値」に変換します。既存のオブジェクトがない場合は、現在のオブジェクトを出力配列に追加します。
この操作の結果は、同じ「name」キーを持つオブジェクトの「value」キーがマージされたオブジェクトの配列になります。配列。
[ { name: "foo1", value: ["val1", "val2", "val3"] }, { name: "foo2", value: ["val4"] } ]
以上が同じ「名前」キーを持つ JavaScript 配列内のオブジェクトをマージし、それらの「値」キーを組み合わせて配列にするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。