首页 > web前端 > js教程 > 如何合并 JavaScript 数组中具有相同'名称”键的对象,并将它们的'值”键合并到一个数组中?

如何合并 JavaScript 数组中具有相同'名称”键的对象,并将它们的'值”键合并到一个数组中?

DDD
发布: 2024-10-29 02:25:29
原创
727 人浏览过

How can you merge objects in a JavaScript array with the same

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板