如何利用reduce等函数实现分组求和

原始数组
['no1',34,'usd',200,'rmb'],
['no1',30,'usd',200,'rmb'],
['no2',50,'usd',200,'rmb'],
['no2',40,'eur',320,'rmb'],
['no3',50,'hkd',100,'rmb']

诉求形成按单号、币种分组得到新的两个数组,并按币种求和,以及汇总RMB字段

如按单号、币种
['no1',64,'usd']

按RMB汇总
['no1',400,'rmb'],
['no2',520,'rmb']

用对象的话 准确性还高点 现在只能通过索引去找
let arr = [
['no1',34,'usd',200,'rmb'],
['no1',30,'usd',200,'rmb'],
['no2',50,'usd',200,'rmb'],
['no2',40,'eur',320,'rmb'],
['no3',50,'hkd',100,'rmb']
]

getTotal('usd', arr)
getTotal('rmb', arr)

function getTotal(type, arr) {
let list = arr.filter(item => {
return item.indexOf(type) != -1;
})
let index = type == 'rmb' ? 3 : 1;
return {
total: list.reduce((sum, item) => {
return sum += item[index];
}, 0),
list: list.reduce((sum, item) => {
return sum += [item[0], item[index], index == 1 ? item[2] : item[4]];
}, 0),
}
}


{
    "data":[
        {
            "seq":"no1",
            "usd":34,
            "rmb":200
        },
        {
            "seq":"no1",
            "usd":30,
            "rmb":200
        },
        {
            "seq":"no2",
            "usd":50,
            "rmb":200
        },
        {
            "seq":"no2",
            "usd":40,
            "rmb":320
        }
    ]
}

<html>
<header>
    <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
    <script type="text/javascript">
    window.onload = function(){
            $.getJSON("data.json",function(data){
                    
                const  result = {}
                    data.data.forEach(item=>{
                    if(!result[item.seq]){
                    result[item.seq] = []
                    }
                    result[item.seq].push(item.usd);
                    //result[item.seq].push('"seq":'+'"'+item.seq+'"'+',"usd":'+item.usd)
                });
                
                for( let key in result)
                {
                    let usd=result[key].reduce((total,p)=>total+p,0);
                    console.log(key+" -"+usd);
                }
        });
        }
        </script>
</header>
</html>

转成对象把。增加新的币种也方便。

output_no1
数组
[34,30]
output_no2
数组
[50,40]

var data = JSON.parse(input.Data);
var result = {};
data.data.forEach(item=>{
if(!result[item.seq]){
result[item.seq] = []
}
result[item.seq].push(item.usd);
//result[item.seq].push('"seq":'+'"'+item.seq+'"'+',"usd":'+item.usd)
});
for( let key in result)
{
let usd=result[key].reduce((total,p)=>total+p,0);
//console.log(key+" -"+usd);
}
output = {output: result };

我是希望能按币种、单号动态分组汇总求和,但好像跑不出来