簡體   English   中英

Angular.js 按數組元素過濾

[英]Angular.js filter by element of array

我有一個 json 對象數組,例如:

 $scope.users = [
    {name:'Maria',age:25,skills["Angular.js","Node.js"]},
    {name:'Maxime',age:28,skills["HTML","MongoDB"]},
    {name:'Noemie',age:28,skills["CSS","MongoDB"]}
 ]

我想做一個搜索引擎。 如果用戶可以輸入一個或多個單詞,那么我的應用程序將過濾我的變量。

例如,用戶輸入“28”和“MongoDB”,然后我將這兩個查詢放在一個數組中

$scope.queries = [28,"MongoDB"]

並用它過濾我的數組:$scope.users。

請注意 $scope.users 不像示例那么簡單,它還有一些其他數組,其中包含數組等......所以我更喜歡一個函數來“簡單地”搜索關鍵字

我想知道如何做一個函數或過濾器。

不是很理想,但你可以試試這個

var filterQueries = [28,"MongoDB"];
var filteredResults = $scope.users.filter(function(obj){
  var match = false;
  filterQueries.forEach(function(query){
    if ( obj.name == query || obj.age == query || obj.skills.indexOf( query ) != -1 ) 
    {
       match = true; //assuming you want any of the query to be found rather than all
    }
  });
  return match;
});

演示

 var users = [ {name:'Maria',age:25,skills : ["Angular.js","Node.js"]}, {name:'Maxime',age:28,skills : ["HTML","MongoDB"]}, {name:'Noemie',age:28,skills : ["CSS","MongoDB"]} ]; var filterQueries = [28,"MongoDB"]; var filteredResults = users.filter(function(obj){ var match = false; filterQueries.forEach(function(query){ if ( obj.name == query || obj.age == query || obj.skills.indexOf( query ) != -1 ) { match = true; //assuming you want any of the query to be found rather than all } }); return match; }); document.body.innerHTML += JSON.stringify( filteredResults, 0, 4 )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM