JavaScript过滤器在Angular中表现奇怪

时间:2015-08-06 02:01:20

标签: javascript arrays angularjs

我在Angular中有一个循环数组的函数:

$scope.things = [{ num: 4 }, { num: 2 }];
$scope.specialThings = [];
$scope.doThings = function() {
    for (var i = 0; i < things.length; i++) {
        // do some things
    }

    $scope.specialThings = $scope.things.filter(function(x) {
        return x.num > 2;
    });

    console.log($scope.specialThings);

};

for循环正在改变我的num数组中项目的things属性。

然后我使用该过滤器函数来隔离things的特殊子集。当所有项目都不符合我的过滤条件时,console.log会打印Array[0]。但是,当某些项目匹配时,我会得到以下内容:

[Object]
    length: 0
    __proto__: Array[0]

我不知道发生了什么。救命啊!

1 个答案:

答案 0 :(得分:0)

如果没有jsfiddle中的运行示例,很难说出问题是什么,但我怀疑它在for循环中的things.length之前缺少$ scope会导致无声错误。所以你的过滤器永远不会执行。

试试这个:

$scope.doThings = function() {
    for (var i = 0; i < $scope.things.length; i++) {
        // do some things
    }

    $scope.specialThings = $scope.things.filter(function(x) {
        return x.num > 2;
    });

    console.log($scope.specialThings);

};