簡體   English   中英

javascript將對象數組轉換為單行總和

[英]javascript Convert array of objects to single row of sum

我想將所有行加到javascript數組中的一行

var input=[
    {id: 'id1', type: "A", active: 3},
    {id: 'id2', type: "A", active: 5},
    {id: 'id3', type: "B", active: 3},
    {id: 'id4', type: "B", active: 4},
    {id: 'id5', type: "C", active: 8},
    {id: 'id6', type: "C", active: 5},
    {id: 'id7', type: "C", active: 6},
    {id: 'id8', type: "C", active: 7},
];

預期產出

[
    {id: NaN, type: NaN, active: 41}
]

 var input=[ {id: 'id1', type: "A", active: 3}, {id: 'id2', type: "A", active: 5}, {id: 'id3', type: "B", active: 3}, {id: 'id4', type: "B", active: 4}, {id: 'id5', type: "C", active: 8}, {id: 'id6', type: "C", active: 5}, {id: 'id7', type: "C", active: 6}, {id: 'id8', type: "C", active: 7}, ]; const t1 = performance.now(); var output=[{}];Object.keys(input[0]).forEach(function(item){ var s=0; input.forEach(function(itema){ s+=parseInt(itema[item]); }); if(!isNaN(s)) output[0][item]=s; else output[0][item]=''; }) const t2 = performance.now(); console.log('output:', output, `in ${t2 - t1}ms`);

還有其他更簡單的方法嗎? 提前致謝

您可以使用reduce來對每個對象中的每個條目進行整數求和。

 const input = [{"id":"id1","type":"A","active":3},{"id":"id2","type":"A","active":5},{"id":"id3","type":"B","active":3},{"id":"id4","type":"B","active":4},{"id":"id5","type":"C","active":8},{"id":"id6","type":"C","active":5},{"id":"id7","type":"C","active":6},{"id":"id8","type":"C","active":7}]; const t1 = performance.now(); const output = input.reduce((acc, obj) => Object.fromEntries( Object.entries(acc).map(([key, val]) => [ key, parseInt(val, 10) + parseInt(obj[key], 10), ]) ) ); const t2 = performance.now(); console.log(output, `in ${t2 - t1}ms`);

這應該適用於任何平面對象結構,前提是數組中的所有對象都是相同的形狀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM