2015-09-10 3 views
1

У меня есть следующий массив записей. И я хочу исключить записи с нулевым значением. В этом случае исключите только «pqr» и получите «abc» и «xyz» в качестве вывода.Как фильтровать записи с ненулевым значением в AngularJS

$scope.myArray = [{ 
    name: 'abc', 
    value: 2 
    }, { 
    name: 'pqr', 
    value: 0 
    }, { 
    name: 'xyz', 
    value: 104 
    }] 

    $scope.filteredRecords = $filter('filter')($scope.myArray, { 
    'value': '!0' 
    }); 

И выход filteredRecords содержит

[{"name":"abc","value":2}] 

Но проблема в том, я не хочу, чтобы исключить «АБВ» запись. Я просто хочу исключить записи со значением точно как 0. Но похоже, что угловое сравнение подстроки не является полным значением.

Как я использовать стандартный угловой фильтр, чтобы получить записи с не нулевым значением (без написания настраиваемого фильтра)

plunker для приведенного выше кода.

ответ

3

Как указано в the doc, вы можете использовать функцию предиката вместо массива:

$scope.filteredRecords = $filter("filter")($scope.myArray, function(value, index, array) { 
    return value.value !== 0; 
}); 
+0

отредактировал код. используя строгий оператор равенства. – Vivek

1

Я хотел бы предложить только с помощью Array.prototype.filter()

$scope.filteredRecords = $scope.myArray.filter(function(item) { 
    return item.value !== 0; 
}); 
0

Вы можете использовать filter метод JavaScript, чтобы сделать это :

$scope.filteredRecords = $scope.myArray.filter(function (item) { 
     return item.value !== 0; 
    }); 

Here является рабочей скрипкой

Смежные вопросы