Javascript 如何使用js数组方法(如map()、reduce()、filter()等)格式化来自服务器的响应,如下所示?
这是我需要重新格式化的API的响应对象: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
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;}