首页 > 解决方案 > 从每笔交易的交易数组中计算当前金额

问题描述

我想在该特定交易的交易列表中显示交易后钱包中的当前可用金额。

这是我的代码

let Transactions = [{title:'txn1',amount:100,type:'credit',date:'01-01-2021'},{title:'txn1',amount:150,type:'credit',date:'01-02-2021'},{title:'txn1',amount:60,type:'debit',date:'01-03-2021'},{title:'txn1',amount:50,type:'debit',date:'01-04-2021'}];

let totalCredit = Transactions.reduce((amount,txn)=>{ return (txn.type === 'credit' && (parseFloat(amount) + parseFloat(txn.amount)) || amount) },0);
let totalDebit = Transactions.reduce((amount,txn)=>{ return (txn.type === 'debit' && (parseFloat(amount) + parseFloat(txn.amount)) || amount) },0);

let currentBalance = totalCredit - totalDebit;
let txncards=[];
let txn_cb = 0;

Transactions = Transactions.sort((a,b)=>{
    a.date = new Date(a.date), b.date = new Date(b.date)
    if(a.date<b.date) return 1;
    if(a.date>b.date) return -1;
    return 0;
})
Transactions.forEach((txn)=>{
    txn_cb = txn_cb + txn.amount;
    txn.cb = txn_cb;
    txncards.push(makecard(txn));
})
$('.card-body').html(txncards);
const makecard = (txn) =>{
    
   //this returns HTML ul li list jQuery Object filled with details provided by txn object

}


结果

结果

如您所见,按日期降序排序,列表的顺序与预期不符;可用余额在 li 中不正确。Txn 1 应位于底部,可用余额应为 100 Txn 2 应位于中间,可用余额应为 200 Txn 3 应位于顶部,可用余额应为 150

那么我在哪里做错了?请忽略轻微的错别字

标签: javascriptarrayssortingtransactions

解决方案


推荐阅读