循环遍历JavaScript中的对象列表

时间:2014-06-07 15:39:22

标签: javascript angularjs

我想遍历从服务器上的REST服务收到的学生列表。此列表包含在部分中注册的学生的对象。每个对象都有firstName,lastName,student ID和许多其他属性,特别是名为isAbsent的属性。它是一个布尔值,如果学生缺席则为真,如果学生不在场,则为假。我想将不在的学生ID(有isAbsent=true)存储在另一个String Array中。

我试过了:

{ 
    //this array will store the IDs of students who are absent.
    $scope.selection = [];
    //$scope.studentList is the list of students for CRN=X and Date=Y
    for (id in $scope.studentList) {
        if ($scope.studentList.isAbsent === true) {
            $scope.selection.push($scope.studentList.id);
            console.log($scope.selection);
        }
    }
}

此代码无法执行。我不知道为什么,我猜循环结构中的问题。有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

也许这会有所帮助?

for (var i=0;i<$scope.studentList.length;i++)
{
    if ($scope.studentList[i].isAbsent === true) 
    {
        $scope.selection.push($scope.studentList[i].id);
        console.log($scope.selection);
    }
} 

P.S。不要将for..in与数组一起使用。它将显示索引而不是值。它不像C#。

答案 1 :(得分:3)

根据您需要支持的浏览器(例如IE&gt; = 9),我建议使用较新的foreach construct。我发现它更容易使用:

$scope.studentList.forEach(function(value, index, array) {
    if (value.isAbsent === true) 
    {
        $scope.selection.push(value.id);
        console.log($scope.selection);
    }
});