Фильтр не равен в AngularJS



У меня есть массив объектов на стороне клиента.
Объект в массиве выглядит следующим образом:



{
code: 0,
short_name: 'a',
type: 1
}


Я пытаюсь отфильтровать этот массив до 2 массивов:




  1. с типом = = = 1

  2. с типом != = 1


Я сделал это:



$scope.array1 = $filter('filter')(data, {type: 1}, true);
$scope.array1 = $filter('filter')(data, {type: !1});


Но не-равный не сработал... что я могу сделать?

Спасибо!

591   3  

3 ответов:

Опять же, если вы просто собираетесь filter, Используйте собственный метод вместо:

$scope.array1 = data.filter(function(x) { return x.type === 1; });
$scope.array2 = data.filter(function(x) { return x.type !== 1; });

В ES2015

$scope.array1 = data.filter(x => x.type === 1);
$scope.array2 = data.filter(x => x.type !== 1);

Вы очень близки. Вам просто нужно изменить свой второй фильтр на:

$scope.array2 = $filter('filter')(data, { type: '!1' });

Я также переименовал переменную scope, так как в противном случае она просто перезаписала бы ваш первый отфильтрованный массив.

Для меня данное решение { type: '!1' } не работает, когда используется с true в качестве последнего параметра $filter('filter')(data, {type: 1}, true);. Однако использование функции работает для меня (см. angular ' s doc):

$scope.array2 = $filter('filter')(data, function(value, index, array) {
            return (value.type !== 1);
        }, true);

Comments

    Ничего не найдено.