我是JavaScript新手。我们有一个代码可以根据“员工ID”添加总小时数。下面的代码显示“excessTime”的正确结果。但对于“全部时间”,它显示“NaN”。有谁知道为什么它会显示“NaN”,同时添加“totalHours”以及如何修复它?无法计算总小时
<!DOCTYPE html>
<html>
<body>
<script>
var input = [
{
"employeeId": "101",
"totalHours": "1:46",
"excessTime": "2:15"
},
{
"employeeId": "102",
"totalHours": "1:15",
"excessTime": "1:30"
},
{
"employeeId": "101",
"totalHours": "1:15",
"excessTime": "3:00"
},
{
"employeeId": "102",
"totalHours": "1:00",
"excessTime": "2:15"
}
]
var obj = input.reduce(function(init, e){
if (init[e["employeeId"]] == undefined){
init[e["employeeId"]] = {hours: parseInt(e["totalHours"].split(":")[0]),minutes: parseInt(e["totalHours"].split(":")[1])};
init[e["employeeId"]].timeString = e["totalHours"];
init[e["employeeId"]] = {hrs: parseInt(e["excessTime"].split(":")[0]),mns: parseInt(e["excessTime"].split(":")[1])};
init[e["employeeId"]].excessString = e["excessTime"];
return init;
} else {
init[e["employeeId"]].hours += (parseInt(e["totalHours"].split(":")[0]) + Math.floor((init[e["employeeId"]].minutes + parseInt(e["totalHours"].split(":")[1]))/60));
init[e["employeeId"]].minutes = (init[e["employeeId"]].minutes + parseInt(e["totalHours"].split(":")[1]))%60;
init[e["employeeId"]].timeString = init[e["employeeId"]].minutes > 9 ? init[e["employeeId"]].hours + ":" + init[e["employeeId"]].minutes : init[e["employeeId"]].hours + ":0" + init[e["employeeId"]].minutes;
init[e["employeeId"]].hrs += (parseInt(e["excessTime"].split(":")[0]) + Math.floor((init[e["employeeId"]].mns + parseInt(e["excessTime"].split(":")[1]))/60));
init[e["employeeId"]].mns = (init[e["employeeId"]].mns + parseInt(e["excessTime"].split(":")[1]))%60;
init[e["employeeId"]].excessString = init[e["employeeId"]].mns > 9 ? init[e["employeeId"]].hrs + ":" + init[e["employeeId"]].mns : init[e["employeeId"]].hrs + ":0" + init[e["employeeId"]].mns;
return init;
}
}, {});
var arr = [];
for (var prop in obj) arr.push({employeeId: prop, totalHours: obj[prop].timeString, excessTime: obj[prop].excessString});
console.log(arr);
</script>
</body>
</html>
输出:
[
{
"employeeId": "101",
"totalHours": "NaN:0NaN",
"excessTime": "5:15"
},
{
"employeeId": "102",
"totalHours": "NaN:0NaN",
"excessTime": "3:45"
}
]
我得到遗漏的类型错误:无法设置属性“小时'的undefined(...) – Yams
它的工作。谢谢。 – Yams
很高兴帮助。 –