Javascript 基于角度中的多个值过滤ng重复

Javascript 基于角度中的多个值过滤ng重复,javascript,angularjs,Javascript,Angularjs,这很难说清楚,但: 我有一个名为users 每个用户都有3个属性:id、name、skill { _id: 1, name: 'frank young', skill: 'java' }, 我有一张表格,在按enter键时收集搜索结果 <form ng-submit="pushToNewArry(searchTerm)"> <input type="text" ng-model="searchTerm"

这很难说清楚,但: 我有一个名为
users

每个用户都有3个属性:
id、name、skill

    {
        _id: 1,
        name: 'frank young',
        skill: 'java'
    },
我有一张表格,在按enter键时收集搜索结果

<form ng-submit="pushToNewArry(searchTerm)">
    <input type="text" ng-model="searchTerm" />
    <input type="submit">
</form>
问题:

如何创建一个过滤器,该过滤器将运行多个搜索词,并根据
用户
集合与输入值创建一个适当匹配的列表

<ol ng-repeat = "user in users | filter: trackedUsers">
    <li class="names"><span>{{$index}}. </span>{{user.name}}</li>
    <li class="skills">{{user.skill}}</li> 
</ol>

  • {{$index}。{{user.name}
  • {{user.skill}}
  • 提交后,将保存用户输入,并根据输入的搜索值创建一个新的
    用户数组。因此,需要多个匹配值

    更新:

    不一定和上面的例子一样,因为我一直在玩它。

    你的意思是喜欢

    更新

    更新

    {{listSearchTerms | json}
    
  • {{$index}。{{user.name}
  • {{user.skill}}
  • Javascript

    var app = angular.module('app', []);
    
    //App.directive('myDirective', function() {});
    //App.factory('myService', function() {});
    
    app.controller('MainCtrl', function ($scope) {
        $scope.users = [
            {
                _id: 1,
                name: 'frank young',
                skill: 'java'
            },
            {
                name: 'jeff qua',
                skill: 'javascript'
            },
            {
                name: 'frank yang',
                skill: 'python'
            },
            {
                name: 'ethan nam',
                skill: 'python'
            },
            {
                name: 'ethan nam',
                skill: 'javascript'
            },
        ];
        $scope.searchTerm = "";
        $scope.listSearchTerms = [];
    $scope.filterSearch = function (terms) {
        return function (item) {
            return terms.length < 1 ? true : 
            terms.reduce(function (lastresult, term) {
                return lastresult + (item.name.indexOf(term) > -1 || item.skill.indexOf(term) > -1);
            }, 0) > 0;
    
        }
    };
        $scope.saveSearchTerm = function () {
            $scope.listSearchTerms.push($scope.searchTerm);
            $scope.searchTerm = "";
        }
    });
    
    var-app=angular.module('app',[]);
    //App.directive('myDirective',function(){});
    //App.factory('myService',function(){});
    应用程序控制器('MainCtrl',函数($scope){
    $scope.users=[
    {
    _id:1,
    姓名:'弗兰克·杨',
    技能:“java”
    },
    {
    姓名:“jeff qua”,
    技能:“javascript”
    },
    {
    姓名:'弗兰克杨',
    技能:“巨蟒”
    },
    {
    姓名:“ethan nam”,
    技能:“巨蟒”
    },
    {
    姓名:“ethan nam”,
    技能:“javascript”
    },
    ];
    $scope.searchTerm=“”;
    $scope.listSearchTerms=[];
    $scope.filterSearch=函数(术语){
    返回函数(项目){
    返回期限。长度<1?正确:
    terms.reduce(函数(lastresult,term){
    返回lastresult+(item.name.indexOf(term)>-1 | | item.skill.indexOf(term)>-1);
    }, 0) > 0;
    }
    };
    $scope.saveSearchTerm=函数(){
    $scope.listSearchTerms.push($scope.searchTerm);
    $scope.searchTerm=“”;
    }
    });
    
    请详细说明您的意思:
    根据用户集合与输入值创建一个适当匹配的列表。
    是的,但我希望将其视为堆栈中的标记。当您添加它们时,它们将固定到查询中。也就是说,如果我输入javascript并按enter键:它将始终显示了解javascript的人。然后,如果我输入frank并输入enter:它将显示所有了解javascript的人和所有名为frank.Dang wayne super close的人!但是,第二个输入是否可以从原始用户集合中筛选,而不是筛选数组的筛选器。本质上,如果一个人向listSearchTerms提交“python”和“jeff”。结果将返回3个人:jeff qua(javascript)、frank yang(python)、ethan nam(python)。最后,非常感谢你的帮助,你是一个摇滚明星。
    <div>{{listSearchTerms | json}}</div>
    <form ng-submit="saveSearchTerm()">
        <input type="text" ng-model="searchTerm" />
        <input type="submit">
    </form>
    <ol  ng-repeat = "user in users | filter:filterSearch(searchTerm)">
        <li class="names"><span>{{$index}}. </span>{{user.name}}</li>
        <li class="skills">{{user.skill}}</li> 
    </ol>
    
    var app = angular.module('app', []);
    
    //App.directive('myDirective', function() {});
    //App.factory('myService', function() {});
    
    app.controller('MainCtrl', function ($scope) {
        $scope.users = [
            {
                _id: 1,
                name: 'frank young',
                skill: 'java'
            },
            {
                name: 'jeff qua',
                skill: 'javascript'
            },
            {
                name: 'frank yang',
                skill: 'python'
            },
            {
                name: 'ethan nam',
                skill: 'python'
            },
            {
                name: 'ethan nam',
                skill: 'javascript'
            },
        ];
        $scope.searchTerm = "";
        $scope.listSearchTerms = [];
    $scope.filterSearch = function (terms) {
        return function (item) {
            return terms.length < 1 ? true : 
            terms.reduce(function (lastresult, term) {
                return lastresult + (item.name.indexOf(term) > -1 || item.skill.indexOf(term) > -1);
            }, 0) > 0;
    
        }
    };
        $scope.saveSearchTerm = function () {
            $scope.listSearchTerms.push($scope.searchTerm);
            $scope.searchTerm = "";
        }
    });