我正在使用 JavaScript 开发基于评级的待办事项应用程序的基本原型(prototype)。我用一个对象来存储任务名称及其评级。示例:
taskDetails = [
{name: "C", rating: 69.3425},
{name: "A", rating: 60.93875},
{name: "D", rating: 57.32,
{name: "B", rating: 59.795}
]
然后有一个函数 checkAllEqual()
var checkAllEqual = function(){
var flag = true;
var temp = [];
for(var i = 0; taskDetails.length; i++){
if(taskDetails[i].rating){ //Line no. 58 of the code
var rating = taskDetails[i].rating;
temp.push(parseInt(rating.toFixed(2)));
}
}
console.log(temp);
return flag;
}
此函数检查所有待办事项是否具有相同的评级。它工作正常,直到 3 次迭代,但在最后一次迭代中,如果括号包含正确的值,即使“评级”内部包含正确的值,也会抛出“评级”未定义的错误! (在调试器中检查)
没找到原因。请帮忙。
错误:
app.js:58 Uncaught TypeError: Cannot read property 'rating' of undefined
at checkAllEqual (app.js:58)
at <anonymous>:1:1
最佳答案
你的循环条件只是 taskDetails.length
,所以这是一个在数组末尾运行的无限循环。您想要i < taskDetails.length
.
关于javascript - 无法读取对象数组中最后一个对象的属性(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46872372/