我有一個物件陣列,我需要在其中找到每個值陣列的總和。看起來像這樣
'1664625533491050': [
380.942, 394.71, 387.936, 273.902,
137.58, 133.82, 66.471, 58.616,
45.966, 36.849, 49.002, 32.275,
65.209, 34.679, 60.806, 46.576,
132.89, 62.005, 0.386, 0.09,
0.005, 0.601, 0.004, 0.316,
0.227, 0.185, 0.206, 0.142,
0.1, 0.121, 0.089, 0.016,
0.033, 0.008, 0, 0.002,
0.001
],
'1664625594588444': [
381.931, 394.71, 387.936, 283.902,
146.365, 133.82, 66.471, 58.616,
45.966, 36.849, 49.002, 32.275,
64.953, 34.679, 60.806, 46.576,
132.889, 68.005, 0.386, 0.09,
0.005, 0.601, 0.004, 0.316,
0.227, 0.185, 0.206, 0.142,
0.1, 0.121, 0.089, 0.016,
0.033, 0.008, 0, 0.002,
0.001
]
}
對于每個物件,我需要找到每個陣列的總和。我相信我需要映射和減少每一個,但我不確定如何參考每個陣列
function getSum(obj) {
for (const key in obj) {
const firstStep = obj[key];
const secondStep = firstStep.map(x => x/*not sure how to reference*/);
const thirdStep = secondStep.reduce((a, b) => a b);
obj[key] = thirdStep
return obj
}
如何參考陣列以便獲得每個物件陣列的總和?
例子
'1664625533491050': 2345.789,
'1664625594588444': 1789.587
// those aren't the actual totals just example of what Im looking to get
uj5u.com熱心網友回復:
不確定您在嘗試什么.map-根本不需要
看這段代碼沒有那一步
注意:您的代碼return在 for 回圈中執行了一次操作,因此只處理了物件的一個??元素;
注意 2:這會改變傳入的物件 - 正如您從console.log(input)
const input = {
'1664625533491050': [
380.942, 394.71, 387.936, 273.902,
137.58, 133.82, 66.471, 58.616,
45.966, 36.849, 49.002, 32.275,
65.209, 34.679, 60.806, 46.576,
132.89, 62.005, 0.386, 0.09,
0.005, 0.601, 0.004, 0.316,
0.227, 0.185, 0.206, 0.142,
0.1, 0.121, 0.089, 0.016,
0.033, 0.008, 0, 0.002,
0.001
],
'1664625594588444': [
381.931, 394.71, 387.936, 283.902,
146.365, 133.82, 66.471, 58.616,
45.966, 36.849, 49.002, 32.275,
64.953, 34.679, 60.806, 46.576,
132.889, 68.005, 0.386, 0.09,
0.005, 0.601, 0.004, 0.316,
0.227, 0.185, 0.206, 0.142,
0.1, 0.121, 0.089, 0.016,
0.033, 0.008, 0, 0.002,
0.001
]
};
function getSum(obj) {
for (const key in obj) {
const array = obj[key];
const sum = array.reduce((a, b) => a b);
obj[key] = sum;
}
return obj;
}
getSum(input);
console.log(input);
如果您不想改變傳入的物件,那么代碼很簡單
const input = {
'1664625533491050': [
380.942, 394.71, 387.936, 273.902,
137.58, 133.82, 66.471, 58.616,
45.966, 36.849, 49.002, 32.275,
65.209, 34.679, 60.806, 46.576,
132.89, 62.005, 0.386, 0.09,
0.005, 0.601, 0.004, 0.316,
0.227, 0.185, 0.206, 0.142,
0.1, 0.121, 0.089, 0.016,
0.033, 0.008, 0, 0.002,
0.001
],
'1664625594588444': [
381.931, 394.71, 387.936, 283.902,
146.365, 133.82, 66.471, 58.616,
45.966, 36.849, 49.002, 32.275,
64.953, 34.679, 60.806, 46.576,
132.889, 68.005, 0.386, 0.09,
0.005, 0.601, 0.004, 0.316,
0.227, 0.185, 0.206, 0.142,
0.1, 0.121, 0.089, 0.016,
0.033, 0.008, 0, 0.002,
0.001
]
};
function betterGetSum(obj) {
return Object.fromEntries(Object.entries(obj).map(([key, array]) => [key, array.reduce((a, b) => a b)]));
}
console.log(betterGetSum(input));
uj5u.com熱心網友回復:
你可以用reduce它來做
let data={
'1664625533491050': [
380.942, 394.71, 387.936, 273.902,
137.58, 133.82, 66.471, 58.616,
45.966, 36.849, 49.002, 32.275,
65.209, 34.679, 60.806, 46.576,
132.89, 62.005, 0.386, 0.09,
0.005, 0.601, 0.004, 0.316,
0.227, 0.185, 0.206, 0.142,
0.1, 0.121, 0.089, 0.016,
0.033, 0.008, 0, 0.002,
0.001
],
'1664625594588444': [
381.931, 394.71, 387.936, 283.902,
146.365, 133.82, 66.471, 58.616,
45.966, 36.849, 49.002, 32.275,
64.953, 34.679, 60.806, 46.576,
132.889, 68.005, 0.386, 0.09,
0.005, 0.601, 0.004, 0.316,
0.227, 0.185, 0.206, 0.142,
0.1, 0.121, 0.089, 0.016,
0.033, 0.008, 0, 0.002,
0.001
]
}
let keys = Object.keys(data)
let result = {}
keys.forEach(k => {
let value = data[k].reduce((a,v) => a v,0)
result[k]=value
})
console.log(result)
uj5u.com熱心網友回復:
Array.reduce()您可以通過使用方法簡單地實作這一點。
現場演示:
const obj = {
'1664625533491050': [
380.942, 394.71, 387.936, 273.902,
137.58, 133.82, 66.471, 58.616,
45.966, 36.849, 49.002, 32.275,
65.209, 34.679, 60.806, 46.576,
132.89, 62.005, 0.386, 0.09,
0.005, 0.601, 0.004, 0.316,
0.227, 0.185, 0.206, 0.142,
0.1, 0.121, 0.089, 0.016,
0.033, 0.008, 0, 0.002,
0.001
],
'1664625594588444': [
381.931, 394.71, 387.936, 283.902,
146.365, 133.82, 66.471, 58.616,
45.966, 36.849, 49.002, 32.275,
64.953, 34.679, 60.806, 46.576,
132.889, 68.005, 0.386, 0.09,
0.005, 0.601, 0.004, 0.316,
0.227, 0.185, 0.206, 0.142,
0.1, 0.121, 0.089, 0.016,
0.033, 0.008, 0, 0.002,
0.001
]
};
Object.keys(obj).forEach(key => {
obj[key] = obj[key].reduce((sum, elem) => sum elem);
})
console.log(obj);
uj5u.com熱心網友回復:
你可以用,for in。看
const object = { a: 1, b: 2, c: 3 };
for (const property in object) {
console.log(`${property}: ${object[property]}`);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/514923.html
上一篇:變數的值沒有更新,它是1或0
