原始数组
['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 };
我是希望能按币种、单号动态分组汇总求和,但好像跑不出来