別の配列に含まれる内容で angular.js をフィルタリングすることは可能ですか? 質問する

別の配列に含まれる内容で angular.js をフィルタリングすることは可能ですか? 質問する

配列がある場合:

$scope.letters = 
[{"id":"a"},
{"id":"b"},
{"id":"c"}];

そしてもう一つの配列

$scope.filterBy = ["b","c","d"];

そして、$filterBy に表示される項目のみで $scope.letters をフィルターする ng-repeat を用意したいと思います。

次のようなことができるようになりたいと思っています:

<span ng-repeat="{{letter in letters|filter: letter.id in filterBy }} > {{letter.id}} </span>

そして、b、cを印刷します

これは本当に愚かな例だとはわかっていますが、別の配列オブジェクトの内容に基づいて angular.js 式をフィルターする方法はありますか?

ベストアンサー1

アップデート

以下は、Angular アプリケーション内でこのフィルターを簡単に実装するための Angular モジュール (@InviS の回答に基づく) です。フィルター-inArrayFilter


@InviS の回答に基づいた角度フィルターのアプローチは次のとおりです。

フィルターは次のようになります。

.filter('inArray', function($filter){
    return function(list, arrayFilter, element){
        if(arrayFilter){
            return $filter("filter")(list, function(listItem){
                return arrayFilter.indexOf(listItem[element]) != -1;
            });
        }
    };
});

どこリストフィルタリングするリストです(このパラメータはAngularによってデフォルトで設定されます)。配列フィルターフィルターとして使用している配列であり、要素リスト内でフィルタリングするプロパティの名前です。

このフィルターを使用するには、ng-repeat を次のように使用します。

<div ng-repeat='letter in letters | inArray:filterBy:"id"'>{{letter.id}}</div>

どこ配列内フィルターですフィルター (このフィルターの最初の引数)マッチングする配列であり、「ID」 (2番目の引数)配列と一致させたいリストの要素です。

これを試すことができますライブ例角度フィルターアプローチを使用します。

おすすめ記事