Javascript AngularJS筛选器隐藏项(如果它存在于另一个数组中)
我有两个阵列:Javascript AngularJS筛选器隐藏项(如果它存在于另一个数组中),javascript,angularjs,data-binding,angularjs-ng-repeat,angularjs-filter,Javascript,Angularjs,Data Binding,Angularjs Ng Repeat,Angularjs Filter,我有两个阵列: $scope.arr1 = [1, 2, 3]; $scope.arr2 = [2, 3, 4]; 我正试图: ng重复通过arr1 使用自定义筛选器仅显示arr1中不在arr2 输出应为1 以下是我的看法: <ul> <li ng-repeat="item in arr1 | matcher"> {{item}} </li> </ul> {{item}} 这是我的控制器: var app = an
$scope.arr1 = [1, 2, 3];
$scope.arr2 = [2, 3, 4];
我正试图:
- ng重复通过
arr1
- 使用自定义筛选器仅显示
中不在arr1
arr2
- 输出应为
1
<ul>
<li ng-repeat="item in arr1 | matcher">
{{item}}
</li>
</ul>
-
{{item}}
这是我的控制器:
var app = angular.module('plunker', []);
app.filter('matcher', function () {
for (var i = 0; i < $scope.arr1.length; i++) {
for (var j = 0; j < $scope.arr2.length; j++) {
if ($scope.arr1[i] != $scope.arr2[j]) {
return $scope.arr1[i];
}
}
}
});
app.controller('MainCtrl', function($scope) {
$scope.arr1 = [1, 2, 3];
$scope.arr2 = [2, 3, 4];
});
var-app=angular.module('plunker',[]);
app.filter('matcher',函数(){
对于(变量i=0;i<$scope.arr1.length;i++){
对于(变量j=0;j<$scope.arr2.length;j++){
if($scope.arr1[i]!=$scope.arr2[j]){
返回$scope.arr1[i];
}
}
}
});
应用程序控制器('MainCtrl',函数($scope){
$scope.arr1=[1,2,3];
$scope.arr2=[2,3,4];
});
这是我的扑克牌:
你知道如何让这个自定义过滤器工作吗?你永远不会以任何方式访问角度过滤器内部的
$scope
,你应该在过滤器内部将它们作为参数传递,然后在过滤器功能内部访问它们。为了使它更干净,您可以在过滤器内部使用.filter
&.indexOf
HTML
<body ng-controller="MainCtrl">
<ul>
<li ng-repeat="item in arr1 | matcher: arr2">
{{item}}
</li>
</ul>
</body>
您将永远无法以任何方式访问角度过滤器内部的
$scope
,您应该将它们作为参数传递到过滤器内部,然后在过滤器功能内部访问它们。为了使它更干净,您可以在过滤器内部使用.filter
&.indexOf
HTML
<body ng-controller="MainCtrl">
<ul>
<li ng-repeat="item in arr1 | matcher: arr2">
{{item}}
</li>
</ul>
</body>
@Ryan很高兴看到它确实对您有所帮助……谢谢:)完成。15分钟的接受回答延迟真的很烦人。再次感谢,没问题。您知道是否可以将此过滤器设置为一个对象数组(即仅返回
红色
和橙色
):@Ryan如果您使用\ucode>lodash.js,它可能看起来像这样,那么它可能会更简单,看起来很棒。我正在使用lodash-这是lodash 3.10的Plunker:@Ryan很高兴看到它确实帮助了你…谢谢:)完成了。15分钟的接受回答延迟真的很烦人。再次感谢,没问题。您知道是否可以将此过滤器设置为一个对象数组(即仅返回红色
和橙色
):@Ryan如果您使用\ucode>lodash.js,它可能看起来像这样,那么它可能会更简单,看起来很棒。我正在使用lodash-以下是lodash 3.10的Plunker: