Фильтр не равен в AngularJS
У меня есть массив объектов на стороне клиента.
Объект в массиве выглядит следующим образом:
{
code: 0,
short_name: 'a',
type: 1
}
Я пытаюсь отфильтровать этот массив до 2 массивов:
- с типом = = = 1
- с типом != = 1
Я сделал это:
$scope.array1 = $filter('filter')(data, {type: 1}, true);
$scope.array1 = $filter('filter')(data, {type: !1});
Но не-равный не сработал... что я могу сделать?
Спасибо!
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