首页 > 解决方案 > 我不能在 Vue.js 中使用计算的 GroupBy 数组

问题描述

我需要这方面的帮助。谢谢你。

我有一个对象:

Funding : [
{person_id:'1';
Amount : '100'},

{person_id:'1';
Amount : '200'},

{person_id:'2';
Amount : '150'},

我想按 person_id 进行 groupBy Funding 并获得每个组中 Amount 的总和。我使用此代码但无法正常工作..

  Groupe(array,key) {
      const result = {}
      array.forEach(funding => {
      if (!result[funding[person_id]]){
      result[funding[person_id]] = []
      }
      result[funding[person_id]].push(item)
       })
      return result
     }

标签: vue.js

解决方案


我创建了两个不同的示例,一个函数将返回其中一个键的总和。在第二个中,它将返回所有键的总和。

这是该https://codepen.io/aquilesb/pen/BvbqMd的代码笔

const data = [
{
  person_id:'1',
  amount : '100'},

{
  person_id:'2',
  amount : '150'
},
 {
  person_id:'1',
  amount : '150'
},
{
  person_id:'2',
  amount : '70'
}
];

const personID = '1';

// return by a key
const groupByKey = (list, key) => list.reduce((acc, item) => {
  if (item.person_id === key) {
    return parseInt(item.amount, 10) + acc;
  } 
  return acc;
}, 0);

//return the sum of all keys
const groupAll = list => list.reduce((acc, item) => {
  const accAmout = acc[item.person_id] || 0;
  return Object.assign({}, acc, {[item.person_id]: accAmout + parseInt(item.amount, 10)});
}, {});

console.log("groupByKey", groupByKey(data, personID));
console.log("groupAll", groupAll(data));


推荐阅读