console
function processMonthlyData(data, conditions) {
const months = _.range(1, 13).map(month => ({
key: `date${month < 10 ? '0' + month : month}`,
date: month < 10 ? '0' + month : month,
numKey: `date${month < 10 ? '0' + month : month }-num`
}));
const dataByMonth = _.keyBy(data, 'startTime');
return conditions.map(condition => {
const [categoryName, field] = _.toPairs(condition)[0];
const monthData = {};
months.forEach(({ key, date, numKey }) => {
monthData[key] = date;
monthData[numKey] = 0;
});
Object.entries(dataByMonth).forEach(([month, items]) => {
const monthValue = dayjs(month).format('MM');
const monthKey = `date${monthValue}`;
const numKey = `${monthKey}-num`;
const value = _.get(items, field, 0);
monthData[numKey] = value;
});
console.log('months:', months);
console.log('monthData:', monthData);
const values = months.map(({ numKey }) => {
const val = monthData[numKey];
return val !== 0 && val !== "" ? parseFloat(val) || 0 : 0;
});
const avgValueResult = _.round(_.sum(values) / 12, 2);
monthData.avg = avgValueResult;
monthData.complaintCateName = categoryName;
return monthData;
});
}
const data = [
{ "startTime": "2025-02", "electricalHandleTime": 2.38, "machineryHandleTime": 2.36, "nonstandardHandleTime": 0, "totalHandleTime": 2.51, "electricalRate": 0.78, "machineryRate": 0.17, "nonstandardRate": 0, "weightingArithmeticMean": 2.2576 },
{ "startTime": "2025-01", "electricalHandleTime": 3.62, "machineryHandleTime": 7.19, "nonstandardHandleTime": 0, "totalHandleTime": 4.51, "electricalRate": 0.69, "machineryRate": 0.28, "nonstandardRate": 0, "weightingArithmeticMean": 4.511 },
{ "startTime": "2025-03", "electricalHandleTime": 3.02, "machineryHandleTime": 6.26, "nonstandardHandleTime": 0, "totalHandleTime": 4.64, "electricalRate": 0.52, "machineryRate": 0.41, "nonstandardRate": 0, "weightingArithmeticMean": 4.137 },
{ "startTime": "2025-04", "electricalHandleTime": 3, "machineryHandleTime": 4.84, "nonstandardHandleTime": 0, "totalHandleTime": 4.15, "electricalRate": 0.41, "machineryRate": 0.54, "nonstandardRate": 0, "weightingArithmeticMean": 3.8436 },
{ "startTime": "2025-05", "electricalHandleTime": 2.19, "machineryHandleTime": 1.78, "nonstandardHandleTime": 0, "totalHandleTime": 1.96, "electricalRate": 0.55, "machineryRate": 0.4, "nonstandardRate": 0, "weightingArithmeticMean": 1.9165 }
];
const conditions = [
{ '标准电气件/天': 'electricalHandleTime' },
{ '标准机械件/天': 'machineryHandleTime' },
{ '非标件/天': 'nonstandardHandleTime' },
{ '处理周期/天(加权算术平均)': 'weightingArithmeticMean' },
{ '处理周期/天(算术平均)': 'totalHandleTime' }
];
const result = processMonthlyData(data, conditions);
console.log(result);
<script src="https://unpkg.com/lodash@4.17.21"></script>
<script src="https://unpkg.com/dayjs@1.11.13"></script>