我有這樣的物件陣列,需要動態計算 N 個鍵的運行總數(累加總和)。
let a = [
{"subject": "Civil", "a": 100, "b":50, "c":100 },
{"subject": "aero", "a": 200, "b":130,"c":100 },
{"subject": "tribe", "a": 100, "b":100,"c":600 },
{"subject": "solen", "a": 400, "b":150,"c":100},
{"subject": "space", "a": 100, "b":100,"c":900 }
];
所需的輸出如下:
[
{"subject": "Civil", "a": 100, "b": 50, "c": 100},
{"subject": "aero", "a": 300, "b": 180, "c": 200},
{"subject": "tribe", "a": 400, "b": 280, "c": 800},
{"subject": "solen", "a": 800, "b": 430, "c": 900},
{"subject": "space"," a": 900, "b": 530, "c": 1800}]
我在下面嘗試使用 MAP 如下:
let b = a.map( x => ({...x,"a":a1 =x.a,"b":b1 =x.b,"c":c1 =x.c}) )
我想在不寫a,b,c的情況下動態實作它。
uj5u.com熱心網友回復:
如果您想對除 之外的每個屬性進行累計求和subject,您可以通過將陣列映射到新值來實作,同時為每個運行總計保留一個物件參考
const a = [{"subject":"Civil","a":100,"b":50,"c":100},{"subject":"aero","a":200,"b":130,"c":100},{"subject":"tribe","a":100,"b":100,"c":600},{"subject":"solen","a":400,"b":150,"c":100},{"subject":"space","a":100,"b":100,"c":900}]
const cf = {} // store running totals in here
const b = a.map(({ subject, ...props }) => ({
subject,
...Object.fromEntries(Object.entries(props).map(([ key, val ]) => [
key,
cf[key] = (cf[key] ?? 0) val // value is the result of the assignment
]))
}))
console.log(b)
.as-console-wrapper { max-height: 100% !important; }
uj5u.com熱心網友回復:
您可以使用.map(),.slice()和.reduce()陣列方法的組合,如下所示:
let a = [
{"subject": "Civil", "a": 100, "b":50, "c":100 },
{"subject": "aero", "a": 200, "b":130,"c":100 },
{"subject": "tribe", "a": 100, "b":100,"c":600 },
{"subject": "solen", "a": 400, "b":150,"c":100},
{"subject": "space", "a": 100, "b":100,"c":900 }
];
let b = a.map((x,i) => ({
subject:x.subject,
a:a.slice(0,i 1).map(({a}) => a).reduce((x,y) => x y),
b:a.slice(0,i 1).map(({b}) => b).reduce((x,y) => x y),
c:a.slice(0,i 1).map(({c}) => c).reduce((x,y) => x y)
}));
console.log( b );
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/369771.html
標籤:javascript 节点.js 数组 目的
上一篇:從字串C中洗掉字符
