javascript - 使用 javascript 将对象合并到 json 中

标签 javascript json data-wrangling

具有以下格式的 JSON:

[{
    name: "A",
    country: "X",
    countryID: "02",
    value: 15
  },
  {
    name: "A",
    country: "Y",
    countryID: "01",
    value: 25
  },
  {
    name: "B",
    country: "X",
    countryID: "02",
    value: 35
  },
  {
    name: "B",
    country: "Y",
    countryID: "01",
    value: 45
  }
]

如何在 Javascript 中按 namecountrycountryID 组合对象以获得以下 JSON 输出?

[{
    country: "Y",
    countryID: "01",
    valueA: 25,
    valueB: 45
  },
  {
    country: "X",
    countryID: "02",
    valueA: 15,
    valueB: 35
  }
]

最佳答案

使用Array.prototype.reduce,您可以按countrycountryID键值对对数组项进行分组,并将结果存储到生成的键的对象值如下。

const input = [{
    name: "A",
    country: "X",
    countryID: "02",
    value: 15
  },
  {
    name: "A",
    country: "Y",
    countryID: "01",
    value: 25
  },
  {
    name: "B",
    country: "X",
    countryID: "02",
    value: 35
  },
  {
    name: "B",
    country: "Y",
    countryID: "01",
    value: 45
  }
];

const groupBy = input.reduce((acc, cur) => {
  const key = `${cur.country}_${cur.countryID}`;
  acc[key] ? acc[key][`value${cur.name}`] = cur.value : acc[key] = {
    country: cur.country,
    countryID: cur.countryID,
    ['value' + cur.name]: cur.value
  };
  return acc;
}, {});

const output = Object.values(groupBy);
console.log(output);

关于javascript - 使用 javascript 将对象合并到 json 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64684490/

相关文章:

php - 在 Javascript 中使用 PHP 变量和 JSON

mysql - 如何使用 Node.js 设置用 mysql 数据库中的数据填充的 json 文件的名称?

r - 我需要将列 "transpose"中两个文本字符串之间的数字复制到第一个文本字符串旁边的列

javascript - 使用 php 从 JSON 数组填充 Web 数据

javascript - 如何在 Phaser 中的 mapLayer 上获取平铺类型

python - 如何直接从 URL 读取 tar.gz 文件到 Pandas 中?

r - 将 R 数据帧过滤为 n 个最常见的情况并按频率排序

javascript - Angular5 服务不发送数据?

javascript - 如何在单页移动 Web 应用程序中实现我自己的历史记录堆栈?

javascript - 数组的单列 HighCharts