我是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
很高興幫助。 –