Javascript 如何使用js数组方法(如map()、reduce()、filter()等)格式化来自服务器的响应,如下所示?

Javascript 如何使用js数组方法(如map()、reduce()、filter()等)格式化来自服务器的响应,如下所示?,javascript,arrays,Javascript,Arrays,这是我需要重新格式化的API的响应对象: const data = { id: 12, currency: "USD", transactions: [ { from_wallet_id: 14, transaction_amount: '30.00', type: 'income', "date": "2019-12-04T06:45:49.394000+06:00" }, { from_walle

这是我需要重新格式化的API的响应对象:

const data = {
  id: 12,
  currency: "USD",
  transactions: [
    {
      from_wallet_id: 14,
      transaction_amount: '30.00',
      type: 'income',
      "date": "2019-12-04T06:45:49.394000+06:00"
    },
    {
      from_wallet_id: 11,
      transaction_amount: '50.00',
      type: 'expenses',
      date: "2019-12-04T06:45:49.394000+06:00"
    },
    {
      from_wallet_id: 11,
      transaction_amount: '70.00',
      type: 'transfer',
      date: "2019-12-06T06:45:49.394000+06:00"
    },
    {
      from_wallet_id: 14,
      transaction_amount: '40.00',
      type: 'transfer',
      date: "2019-12-08T06:45:49.394000+06:00"
    },
  ]
}
我需要将其更改为下面给出的示例(使用诸如reduce、map、filter等数组方法) 一点信息: 收入是该日期的交易总额。 费用是该日期的交易总额。 类型“转账”可以是收入或费用 如果类型为“转账”且from_wallet_id不等于data.id 然后它将被添加到收入中,否则它将被添加到费用中

formattedObject = {
  "2019-12-04": {
    date: "2019-12-04",
    income: 30,
    expenses: 50
  },
  "2019-12-06": {
    date: "2019-12-06",
    income: 0,
    expenses: 70
  },
  "2019-12-08": {
    date: "2019-12-08",
    income: 40,
    expenses: 0
  }
}

您可以减少数组并对
类型进行调整:“传输”

const
数据={id:12,货币:“美元”,交易:[{from_wallet_id:14,交易金额:'30.00',类型:'income',日期:'2019-12-04T06:45:49.394000+06:00},{from_wallet_id:11,交易金额:'50.00',类型:'Expense',日期:'2019-12-04T06:45:49.394000+06:00},{from_wallet_id:11,交易金额:'70.00',类型:'transfer',日期:“2019-12-06T06:45:49.394000+06:00”},{from_wallet_id:14,交易金额:'40.00',键入:'transfer',日期:'2019-12-08T06:45:49.394000+06:00'}],
结果=data.transactions.reduce((r,{from_wallet_id,transaction_amount,type,date})=>{
日期=日期切片(0,10);
如果(类型=='transfer')类型=data.id==来自钱包\u id?“费用”:“收入”;
r[date]=r[date]|{日期,收入:0,费用:0};
r[日期][类型]+=+交易金额;
返回r;
}, {});
console.log(结果);

.as console wrapper{max height:100%!important;top:0;}
您可以减少数组并对
类型进行调整:“transfer”

const
数据={id:12,货币:“美元”,交易:[{from_wallet_id:14,交易金额:'30.00',类型:'income',日期:'2019-12-04T06:45:49.394000+06:00},{from_wallet_id:11,交易金额:'50.00',类型:'Expense',日期:'2019-12-04T06:45:49.394000+06:00},{from_wallet_id:11,交易金额:'70.00',类型:'transfer',日期:2019-12-06T06:45:49.394000+06:00“},{from_wallet_id:14,交易金额:'40.00',键入:'transfer',日期:'2019-12-08T06:45:49.394000+06:00“}],
结果=data.transactions.reduce((r,{from_wallet_id,transaction_amount,type,date})=>{
日期=日期切片(0,10);
如果(类型=='transfer')类型=data.id==来自钱包\u id?“费用”:“收入”;
r[date]=r[date]|{日期,收入:0,费用:0};
r[日期][类型]+=+交易金额;
返回r;
}, {});
console.log(结果);
。作为控制台包装{最大高度:100%!重要;顶部:0;}