2016-11-21 209 views
0

我正在使用角度$過濾器從兩個字符串中取得不匹配的對象。在控制器中使用角度過濾器過濾非匹配對象

我寫下面的代碼來迭代。

angular.forEach(this.members, function (value: any, index: any) { 
       var person = this.$filter('filter')(this.allPersonnel, { Id: value.Member.Id })[0]; 
       console.log(person); 
       this.validPerson.push(person); // Filter 
      }); 

正如你看到的我是不是不能加「不等於」條件。我試過"Id:'!value.Member.Id'"

但它正在考慮作爲字符串。

難道你們請告訴我一種方法來做到這一點。我正在使用Typescript角。

回答

0

創建您自己的自定義過濾器,並使用它來代替。

下面是如何創建一個例子:Creating a custom Angular filter with TypeScript

+0

感謝您的回覆。我正在尋找邏輯來查找兩個數組中不匹配的節點。我知道如何創建自定義過濾器。我看起來像C#linq - 'var list1IDs = new HashSet (List1.Select(s => s.ID)); var results = List2.Where(m =>!list1IDs .Contains(m.ID));' –

+0

Ahh OK。那麼最簡單的方法就是使用像Lodash這樣的庫。在那裏你有一個像https://lodash.com/docs/#differenceBy這樣的方法,你可以把你的邏輯和想要的結果。 – tomepejo

+0

這裏是如何將Lodash導入到您的項目中http://stackoverflow.com/questions/34660265/importing-lodash-into-angular2-typescript-application。 – tomepejo

0

<!DOCTYPE html> 
 
<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<body> 
 

 
<div ng-app="myApp" ng-controller="namesCtrl"> 
 
<p><input type="button" value="Find Match" ng-click="FindUniqueRecords()"/></p> 
 
<p> Filtered Records:</p> 
 
<ul> 
 
    <li ng-repeat="x in FilteredRecords"> 
 
    {{ x }} 
 
    </li> 
 
</ul> 
 
</div> 
 

 
<script> 
 
angular.module('myApp', []).controller('namesCtrl',['$scope','$filter', function($scope,ff) { 
 
$scope.FilteredRecords=[]; 
 
$scope.FindUniqueRecords=function(){ 
 
angular.forEach($scope.CountryCode1,function(value,index){ 
 
var foundMatch=ff('filter')($scope.CountryCode2,value); 
 
if(foundMatch.length==0){ 
 
$scope.FilteredRecords.push(value); 
 
} 
 
}); 
 
angular.forEach($scope.CountryCode2,function(value,index){ 
 
var foundMatch=ff('filter')($scope.CountryCode1,value); 
 
if(foundMatch.length==0){ 
 
$scope.FilteredRecords.push(value); 
 
} 
 
}); 
 

 
}; 
 
$scope.CountryCode1= [ 
 
     'Aus', 
 
     'NZ' 
 
    ]; 
 
$scope.CountryCode2= [ 
 
     'Aus', 
 
     'Ind', 
 
     'Eng' 
 
    ]; 
 

 
}]); 
 
</script> 
 

 
</body> 
 
</html>

我想這個邏輯從兩個陣列找到獨特的名單。