首页 > 解决方案 > 使用 javascript 组合 JSON 中的常用属性

问题描述

我想在我的 JSON 对象中添加一个公共属性。这是示例 JSON 对象

results = [
  {
    MKTUNITID: 'India',
    TOTCOUNT: 20,
  },
  {
    MKTUNITID: 'India',
    TOTCOUNT: 4,
  },
  {
    MKTUNITID: 'China',
    TOTCOUNT: 8,
  },
  {
    MKTUNITID: 'India',
    TOTCOUNT: 6,
  },
  {
    MKTUNITID: 'Japan',
    TOTCOUNT: 2,
  },
  {
    MKTUNITID: 'Japan',
    TOTCOUNT: 4,
  },
  {
    MKTUNITID: 'China',
    TOTCOUNT: 2,
  },
];

预期的示例结果是添加 TOTCOUNT 字段以重复 MKTUNIT 属性,如下所示:

results = [
  {
    MKTUNITID: 'India',
    TOTCOUNT: 30,
  },

  {
    MKTUNITID: 'China',
    TOTCOUNT: 10,
  },

  {
    MKTUNITID: 'Japan',
    TOTCOUNT: 6,
  },
];

标签: javascriptjson

解决方案


var arr = [{
  "MKTUNITID": "India",
  "TOTCOUNT": 20,

}, {
  "MKTUNITID": "India",
  "TOTCOUNT": 4,

}, {
  "MKTUNITID": "China",
  "TOTCOUNT": 8,

}, {
  "MKTUNITID": "India",
  "TOTCOUNT": 6,

}, {
  "MKTUNITID": "Japan",
  "TOTCOUNT": 2,

}, {
  "MKTUNITID": "Japan",
  "TOTCOUNT": 4,
}, {
  "MKTUNITID": "China",
  "TOTCOUNT": 2,
}, ];

var x = arr.reduce((result, {
  MKTUNITID,
  TOTCOUNT
}) => {
  result[MKTUNITID] = result[MKTUNITID] ? result[MKTUNITID] + TOTCOUNT : TOTCOUNT;
  return result;
}, {});

let result = Object.keys(x).map(d => ({
  MKTUNITID: d,
  TOTCOUNT: x[d]
}));
console.log(result)


推荐阅读