我被卡住了!我有以下代碼:困惑,循環嵌套對象並做具體計算
const hours = [
{
"workHour" : "8",
"Item name 1" : 120,
"Item name 2" : 149,
"Item name 3" : 137
},
{
"workHour" : "9",
"Item name 1" : 134,
"Item name 2" : 119,
"Item name 3" : 144
},
{
"workHour" : "10",
"Item name 1" : 60,
"Item name 2" : 86,
"Item name 3" : 83
},
];
const records = [
{ date: new Date(), statistics: hours },
{ date: new Date(), statistics: hours },
{ date: new Date(), statistics: hours },
];
const result = {};
result.chart = [];
records.forEach((record) => {
const items = [];
record.statistics.forEach((hour) => {
for (let key in hour) {
if (key !== 'workHour') {
items.push({
key: hour[key]
})
}
}
});
result.chart.push({
date: record.date,
items
});
});
console.log(result);
我試圖做的是遍歷所有的記錄數組中的每個項目,然後遍歷每個記錄的時間,加在一起每一個項目的所有值,如計算從所有的總小時,我試着得到的結果是:
array = [
{
date: //record date,
"Item name 1" : 314,
"Item name 2" : 354,
"Item name 3" : 364
},
{
date: //record date,
"Item name 1" : 314,
"Item name 2" : 354,
"Item name 3" : 364
},
{
date: //record date,
"Item name 1" : 314,
"Item name 2" : 354,
"Item name 3" : 364
}
];
當小時項鍵可正常工作的例子:
const hours = [
{
"workHour" : "8",
"Item name 1" : 120,
"Item name 2" : 149,
"Item name 3" : 137
},
{
"workHour" : "9",
"Item name 1" : 134,
"Item name 2" : 119,
"Item name 3" : 144
},
{
"workHour" : "10",
"Item name 1" : 60,
"Item name 2" : 86,
"Item name 3" : 83
},
]。
const records = [
{ date: new Date(), statistics: hours },
{ date: new Date(), statistics: hours },
{ date: new Date(), statistics: hours },
];
const result = {};
result.records = [];
const calculate = (profits, key) =>
profits
.filter(profit => profit !== null)
.reduce((prevVal, profitVal) => prevVal + profitVal[key], 0) || 0;
records.forEach((record) => {
const items = [];
const { statistics } = record;
result.records.push({
date: record.date,
'Item name 1': calculate(statistics, 'Item name 1'),
'Item name 2': calculate(statistics, 'Item name 2'),
'Item name 3': calculate(statistics, 'Item name 3'),
});
});
console.log(result);
打印:
records = [
{
'Item name 1': 314,
'Item name 2': 354,
'Item name 3': 364,
},
{
'Item name 1': 314,
'Item name 2': 354,
'Item name 3': 364,
},
{
'Item name 1': 314,
'Item name 2': 354,
'Item name 3': 364,
},
]
您正在嘗試在'array'每個對象設置相同的值? – guest271314
@ guest271314我想循環所有的時間,並且+ =總結每個項目 –
沒有關注。預期的結果數組包含相同的對象? – guest271314