在 JavaScript 中使用共享键合并数组中的对象
问题陈述
考虑一个数组对于对象,其中每个对象都有一个“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”键的对象将其“value”键合并到一个数组。
[ { name: "foo1", value: ["val1", "val2", "val3"] }, { name: "foo2", value: ["val4"] } ]
以上是如何合并 JavaScript 数组中具有相同'名称”键的对象,并将它们的'值”键合并到一个数组中?的详细内容。更多信息请关注PHP中文网其他相关文章!