Angularjs: фильтровать массив с помощью $ filter - PullRequest
0 голосов
/ 05 марта 2019

Я хочу сделать:

myList.forEach(function(element){
   if (!['state1', 'state2'].contains(element.state)){
     myFilteredList.push(element)
   }
})

элегантным способом с помощью $ filter ('filter'), но я не понимаю, как я могу это сделать.Если кто-нибудь знает ...

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Вы можете использовать:

myFilteredList = $filter('filter')(myList, function(element){
    return ['state1', 'state2'].indexOf(element.state) == -1
})

angular.module("app", [])
  .controller("ctrl", function($scope, $filter) {
    var myList = [{
        state: 'state1',
        prop: 'prop1'
      },
      {
        state: 'state2',
        prop: 'prop2'
      },
      {
        state: 'state2',
        prop: 'prop3'
      },
      {
        state: 'state3',
        prop: 'prop4'
      },
      {
        state: 'state4',
        prop: 'prop5'
      }
    ]

    $scope.myFilteredList = $filter('filter')(myList, function(element) {
      return ['state1', 'state2'].indexOf(element.state) == -1
    })
  })
<!DOCTYPE html>






  {{ myFilteredList | json }}
0 голосов
/ 05 марта 2019

Далее будет возвращен объект, который не включает в себя state1 и state2

myList = [{ state: 'state1', p: 'csss' }, { state: 'state2', p: 'cppss' }, { state: 'state2', p: 'csssss' }, { state: 's1', p: 'csaas' }]
myFilteredList = [];
x = $filter('filter')(myList, (item) => {
    return !['state1', 'state2'].includes(item.state)
})
myFilteredList.push(x)
console.log(myFilteredList);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...