1 回答
TA贡献1829条经验 获得超9个赞
以下代码将执行您想要的操作
let obj = [
{'8': 'FIX.4.2', 'Account': 'Client1', 'Symbol': '1234.T', 'Side': '1', 'LastPx': 6000, 'LastQty': 100},
{'8': 'FIX.4.2', 'Account': 'Client2', 'Symbol': '1235.T', 'Side': '1', 'LastPx': 7000, 'LastQty': 200},
{'8': 'FIX.4.2', 'Account': 'Client1', 'Symbol': '1234.T', 'Side': '2', 'LastPx': 4000, 'LastQty': 50},
{'8': 'FIX.4.2', 'Account': 'Client2', 'Symbol': '1234.T', 'Side': '2', 'LastPx': 5000, 'LastQty': 200},
{'8': 'FIX.4.2', 'Account': 'Client1', 'Symbol': '1234.T', 'Side': '5', 'LastPx': 4500, 'LastQty': 100},
{'8': 'FIX.4.2', 'Account': 'Client1', 'Symbol': '1235.T', 'Side': '5', 'LastPx': 6000, 'LastQty': 100},
{'8': 'FIX.4.2', 'Account': 'Client2', 'Symbol': '1234.T', 'Side': '5', 'LastPx': 5500, 'LastQty': 150}
];
function slicer_and_dicer(obj, arr) {
let ret = {};
obj.forEach(o => {
const e = arr.reduce((r, k) => (r[o[k]] = r[o[k]] || {}), ret);
e.TotalNV = (e.TotalNV || 0) + o.LastPx * o.LastQty;
});
return ret;
}
console.log(slicer_and_dicer(obj, ['Account', 'Symbol']));
console.log(slicer_and_dicer(obj, ['Account', 'Symbol', 'Side']));
添加回答
举报