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

时间:2017-10-22 09:10:48

标签: javascript arrays object iteration

我正在研究基于评级的基于javascript的待办事项应用程序的基本原型。我正在使用一个对象来存储任务名称及其评级。例如:

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次迭代,但在最后一次抛出错误,'rating'未定义,即使在内部'rating',如果括号保持正确值! (在调试器中检查)

我找不到原因。请帮忙。

错误:

app.js:58 Uncaught TypeError: Cannot read property 'rating' of undefined
    at checkAllEqual (app.js:58)
    at <anonymous>:1:1

2 个答案:

答案 0 :(得分:1)

你的循环条件只是taskDetails.length,所以这是一个无限循环,它在数组的末尾运行。你想要i < taskDetails.length

答案 1 :(得分:0)

将循环的条件更改为  i < taskDetails.length