javascript - 根据其他值合并数组中的对象

标签 javascript arrays json merge

我正在尝试根据一系列匹配属性将一组字符串合并到一个数组中,并删除重复项。

我当前的数组:

{id: "12", value: "Option 1"},
{id: "55", value: "Option A"},
{id: "55", value: "Option B"},
{id: "55", value: "Option C"},
{id: "55", value: "Option D"},
{id: "106", value: "Option 1"}

我想合并所有 ID 为“55”的项目,这样我的数组将如下所示:

{id: "12", value: "Option 1"},
{id: "55", value: "Option A, Option B, Option C, Option D"},
{id: "106", value: "Option}

我只能设法使用 for 循环合并前 2 项并检查 -1 兄弟项,如果不严重膨胀我的代码就无法解决这个问题。

如有任何建议,我们将不胜感激。

最佳答案

您可以将对象用作查找表,同时将结果并行存储在数组中:

const lookup = {}, result = [];

for( const {id, value} of input ){
  if(lookup[id]){
     lookup[id].value += "," + value;
  }else{
     result.push( lookup[id] = {id, value} );
  }
}

这是相当新的 javascript,但它 works在现代引擎上;)

关于javascript - 根据其他值合并数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47082471/

相关文章:

javascript - 将 JSON 漂亮地转储到文本

javascript - 如何以 Angular 将 JSON 转换为 HTML

ios - 使用 Alamofire 和 EVReflection 的 JSON POST 请求

javascript - 将文件下载到本地计算机并以邮件附件的形式发送

javascript - 当链接已经有 anchor 滚动时滚动到另一个页面上的位置

java - 如何使用二维数组(Java)返回时间?

javascript - 有一个石头剪刀布柜台

javascript - 如何知道AngularJS中的范围

javascript - 如何显示侧边栏菜单

c++ - Armadillo C++ : matrix initialization from array