【问题标题】:AngularJS: how to find objects from an array of objects, given an array of property values in an array, using $filterAngularJS:如何从对象数组中查找对象,给定数组中的属性值数组,使用$filter
【发布时间】:2015-05-31 13:27:45
【问题描述】:

在具有属性的数组(items 数组)中有一组对象

item_id:
[{item_id:1,...},{item_id:2,...}...]

有另一个数组有一组

item_ids:
[2, 8, 10]

如何使用 angularjs 的 $filter 从项目数组中获取对象数组,其中 item_iditem_ids 数组中的对象匹配。

【问题讨论】:

    标签: javascript arrays angularjs angularjs-filter


    【解决方案1】:

    您可以使用自定义过滤器来进行这种过滤。如果你想在代码而不是模板中这样做,你可以使用 use $filter 服务。

    Filter Guide

    请看下面的代码。

    var app = angular.module('app', []);
    
    app.controller('ctrl', function($scope, $filter) {
    
      $scope.items = [{
        item_id: 1
      }, {
        item_id: 2
      }, {
        item_id: 3
      }, {
        item_id: 4
      }];
    
      $scope.findList = [2, 4];
      $scope.findList2 = [3];
    
      // Using $filter service.
      $scope.usingservice = $filter('findobj')($scope.items, [1, 3])
    });
    
    app.filter('findobj', function() {
    
      return function(list, obj) {
    
        return list.filter(function(l) {
          if (obj.indexOf(l.item_id) >= 0) {
            return true;
          }
        });
    
      };
    })
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    <div ng-app="app">
      <div ng-controller="ctrl">
        <div ng-repeat="item in items | findobj: findList">
          {{item}}
        </div>
        <hr/>
        <div ng-repeat="item in items | findobj: findList2">
          {{item}}
        </div>
        <hr/>{{usingservice}}
      </div>
    </div>

    【讨论】:

    • 想要在代码中使用 $filter 执行此操作,如您的示例所示。不知道可以使用数组代替过滤条件。另一部分(与 ng-repeat 一起使用)也非常有用。
    猜你喜欢
    • 2011-05-09
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 2017-11-08
    • 2018-10-31
    相关资源
    最近更新 更多