【问题标题】:SUM AND GROUPING JSON DATA USING JAVASCRIPT [duplicate]使用 JAVASCRIPT 对 JSON 数据求和和分组 [重复]
【发布时间】:2022-02-04 17:45:11
【问题描述】:

很抱歉,如果以前有人问过这个问题,但我找不到一个很好的例子来说明我正在努力完成的事情。也许我只是没有在寻找正确的东西。如果某处对此有解释,请纠正我。

假设我有这样的数据:

data = [
{"no":1,"location":"New York","transaction":3000},
{"no":2,"location":"Tokyo","transaction":3000},
{"no":3,"location":"New York","transaction":3000},
{"no":4,"location":"Amsterdam","transaction":3000},
{"no":5,"location":"Manchester","transaction":3000},
{"no":6,"location":"New York","transaction":3000},
{"no":7,"location":"Tokyo","transaction":3000},
{"no":8,"location":"Tokyo","transaction":3000},
{"no":9,"location":"New York","transaction":3000},
{"no":10,"location":"Amsterdam","transaction":3000}
]

我想要的是这样的输出:

result = [
{"location":"New York","transaction":12000},
{"location":"Tokyo","transaction":9000},
{"location":"Amsterdam","transaction":6000}
{"location":"Manchester","transaction":3000}
]

所以我想做的是根据位置对数据进行分组,并对位置相同的事务求和,然后将数据推送到另一个数组。我不知道从哪里开始,需要一些帮助来解决这个问题或使用 Javascript 解决这个问题的任何建议。谢谢

【问题讨论】:

  • 您可能需要使用循环,如for(),以及push() 对象到一个新的空数组,诸如此类。这是经典的数据操作。请试一试,展示您的尝试,如果您遇到特定问题,我们可以提供帮助
  • @JeremyThille 这个问题已经被问了几千次了,没有意义再次回答
  • 这正是我没有回答的原因。不过,我想给出提示并没有什么坏处。
  • @Jamiec 感谢提供信息的伙伴,就像我说的,也许我没有正确搜索。我再试一次

标签: javascript json


【解决方案1】:

工作演示:

// Input array
const data = [
{"no":1,"location":"New York","transaction":3000},
{"no":2,"location":"Tokyo","transaction":3000},
{"no":3,"location":"New York","transaction":3000},
{"no":4,"location":"Amsterdam","transaction":3000},
{"no":5,"location":"Manchester","transaction":3000},
{"no":6,"location":"New York","transaction":3000},
{"no":7,"location":"Tokyo","transaction":3000},
{"no":8,"location":"Tokyo","transaction":3000},
{"no":9,"location":"New York","transaction":3000},
{"no":10,"location":"Amsterdam","transaction":3000}
];

// result array
const resultArr = [];

// grouping by location and resulting with an object using Array.reduce() method
const groupByLocation = data.reduce((group, item) => {
  const { location } = item;
  group[location] = group[location] ?? [];
  group[location].push(item.transaction);
  return group;
}, {});

// Finally calculating the sum based on the location array we have.
Object.keys(groupByLocation).forEach((item) => {
    groupByLocation[item] = groupByLocation[item].reduce((a, b) => a + b);
    resultArr.push({
        'location': item,
      'transaction': groupByLocation[item]
    })
})

console.log(resultArr)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    相关资源
    最近更新 更多