具有对象数组作为输入,我必须找到并减去具有相同transactionAmount
(与循环中的当前项目)且transactionReference
等于13的项目的transactionType
字段的数量。最终结果,我必须排除transactionType
为13的项目,并对其余项目进行一些自定义操作。
给出下面的数组:
[
{
transactionId: 45194,
transactionDate: 1579858773136,
transactionType: 13,
transactionReference: 82941,
transactionAmount: 1.21
},
{
transactionId: 45193,
transactionDate: 1579858773120,
transactionType: 11,
transactionReference: 82941,
transactionAmount: 10
},
{
transactionId: 45192,
transactionDate: 1579858763947,
transactionType: 1,
transactionAmount: 10
},
{
transactionId: 45191,
transactionDate: 1579858759085,
transactionType: 131,
transactionAmount: 2000
}
]
我想出了以下功能:
transactions => transactions
.map(({
transactionId,
transactionDate,
transactionType,
transactionReference,
transactionAmount
}) => ({
transactionId,
transactionDate,
transactionType,
transactionReference,
transactionAmount: transactionAmount - Number(transactions
.filter(({
transactionId: _transactionId,
transactionReference: _transactionReference,
transactionType
}) => transactionType === 13 &&
_transactionId !== transactionId &&
transactionReference&&
_transactionReference === transactionReference
)
.map(({ transactionAmount }) => transactionAmount))
}))
.filter(({ transactionType }) => transactionType !== 13)
.map(({
transactionId,
transactionAmount,
transactionDate,
transactionType
}) => ({
id: transactionId,
amount: Number(transactionAmount).toFixed(2),
date: moment(transactionDate).format('H:mm'),
type: transactionType
}))
[我现在想做的是减少map / filter函数的使用数量(同时保持结果),因为我怀疑这样做的方式并不是最有效的。
结果:
[
{
id: 45193,
amount: "8.79",
date: 1579858773120,
type: 11
},
{
id: 45192,
amount: "10.00",
date: 1579858763947,
type: 1
},
{
id: 45191,
amount: "2000.00",
date: 1579858759085,
type: 131
}
]