[英]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.