Angular.js按数组

时间:2016-05-09 13:21:26

标签: javascript arrays angularjs json filter

我有一个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 with it。

请注意$ scope.users并不像示例那么简单,它有一些其他数组包含数组等...所以我更喜欢一个“简单地”搜索关键字的函数

我想知道如何做一个功能或过滤器,你能帮帮我吗?谢谢!

Bonsoiràtous, J'ai un tableau 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"]}
 ]

j'aimerais faire un“moteur de recherche”,un utilisateur pourra rentrer un ou plusieursmotscléindépendantsetmon application filtrera ma variable avec

Par exemple si l'utilisateur rentre“28”et“MongoDB”je mets ces valeurs dans un tableau:

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

etçafensrerama raaraible:$ scope.users avec ce tableau。

Notez que ma变量$ scope.users n'est pas aussi simple que l'exemple,elleestconstituédetableaux dans des tableaux etc ... du coupjeprivilégielarecherche“simple”parmotsclé。

Vous voyez ce que je veux faire? pouvez vous m'aider? MERCI!

1 个答案:

答案 0 :(得分:2)

不是最优,但你可以试试这个

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;
});

<强>样本

&#13;
&#13;
	 
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 )
&#13;
&#13;
&#13;