第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據(jù)輸入字段從普通對象數(shù)組創(chuàng)建嵌套的 sum json 對象

根據(jù)輸入字段從普通對象數(shù)組創(chuàng)建嵌套的 sum json 對象

藍(lán)山帝景 2021-10-29 15:10:12
我正在構(gòu)建一個 UI 以允許用戶將一些 FIX 消息數(shù)據(jù)切片和切塊到一些 d3 圖表中。FIX 消息帶有一些字段和值對,因此我將它們處理成包含這些對的對象數(shù)組。例如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}]當(dāng)我想要一個允許以下輸入和輸出的函數(shù)時,它變得具有挑戰(zhàn)性:function slicer_and_dicer(obj, arr){......}其中 obj 是解析后的 FIX 對象,數(shù)組是您要將對象嵌套到的字段。數(shù)組中的元素順序很重要。例如slicer_and_dicer(obj, ['Account', 'Symbol'])將給出嵌套的 json 對象的輸出,該對象對下面的 totalnv = lastpx * lastqty 求和:{'Client1':{           '1234.T':{ 'TotalNV': 1250000 },           '1235.T':{ 'TotalNV': 600000 }          },'Client2':{           '1234.T':{ 'TotalNV': 1825000 },           '1235.T':{ 'TotalNV': 1400000 }          }}如果數(shù)組中的給定元素是已知的,我可以構(gòu)建一個函數(shù)來創(chuàng)建一個類似的對象,但如果它變成動態(tài)的,例如添加一個新級別的“Side”slicer_and_dicer(obj, ['Account', 'Symbol', 'Side'])有人可以分享解決方案嗎?謝謝!
查看完整描述

1 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗 獲得超9個贊

以下代碼將執(zhí)行您想要的操作


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']));


查看完整回答
反對 回復(fù) 2021-10-29
  • 1 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號