javascript - 无法读取对象数组中最后一个对象的属性(javascript)

标签 javascript arrays object iteration

我正在使用 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/

相关文章:

javascript - 如何让 Firefox 将 XML namespace 附加到我的 html 元素?

javascript - 在数组中查找具有下一个较低值的对象

javascript - 如果在对象中找到值,则返回键

javascript - 拆分对象属性中的字符串并创建新数据集

javascript - 在 Salesforce 中的记录类型之间转换

javascript - 内置排序比手工排序慢?

javascript - 如何验证 Firebase 安全规则中的电子邮件地址

javascript - three.js天空盒: obvious corners and lots of distortion

c# - 无法相应地拆分字符串

c# - .Net 数组大小的限制