如何按用户名过滤

how to filter by username?

本文关键字:过滤 用户 何按      更新时间:2023-09-26

我有一个Json对象。

       [{
"id":"1",
"username": "vishnu",
"FromDate": "Wed Mar 02 2016 10:56:45 GMT+0530 (India Standard Time)",
"selectedProject": "createwhimsy",
"task": "fixing bugs",
"time": "1"
  }, {
"id":"2",
"username": "seenu",
"FromDate": "Wed Mar 02 2016 10:56:45 GMT+0530 (India Standard Time)",
"selectedProject": "createwhimsy",
"task": "working on ui",
"time": "2"
   }, {
"id":"3",
"username": "sam",
"FromDate": "Wed Mar 02 2016 10:56:45 GMT+0530 (India Standard Time)",
"selectedProject": "bigiron",
"task": "working on api",
"time": "5"
 },
    {
"id":"4",
"username": "vishnu",
"FromDate": "Wed Mar 03 2016 10:56:45 GMT+0530 (India Standard Time)",
"selectedProject": "timetracker",
"task": "ui designing",
"time": "1"
   },{
"id":"5",
"username": "arun",
"FromDate": "Wed Jan 02 2016 10:56:45 GMT+0530 (India Standard Time)",
"selectedProject": "createwhimsy",
"task": "fixing bugs",
"time": "1"
  }, {
"id":"6",
"username": "seenu",
"FromDate": "Wed Mar 01 2016 10:56:45 GMT+0530 (India Standard Time)",
"selectedProject": "createwhimsy",
"task": "working on ui",
"time": "2"
    }, {
"id":"7",
"username": "sam",
"FromDate": "Wed Mar 03 2016 10:56:45 GMT+0530 (India Standard Time)",
"selectedProject": "createwhimsy",
"task": "working on api",
"time": "6"
 },
   {
"id":"8",
"username": "vishnu",
"FromDate": "Wed Mar 03 2016 10:56:45 GMT+0530 (India Standard Time)",
"selectedProject": "timetracker",
"task": "ui designing",
"time": "4"
    }]

我想制作一个自定义过滤器来过滤特定用户(根据用户名),并获取过滤数据的长度。示例,用户名:毗湿奴,我想过滤并检查用户名毗湿奴有多少对象。像这样,我想为所有用户获得。

我创建了一个自定义过滤器,例如(键入的代码,不正确),

   app.filter('myfilter',function(){
 return function(mydata){
 var filterd data=[];
angular.foreach(mydata,function(s){
 if(s.name==$scope.model)
 {
filtereddata.push(s)
  }
 })
 return filtereddata;
}
  });

现在我该怎么办?

代替filtereddata,你可以返回filtereddata.length 对吗?

使用

s.name.indexOf($scope.model)>-1 

而不是

s.name==$scope.model  

对于"赞"搜索或"包含"搜索

基于注释创建的示例

.HTML

<body ng-app="myApp">
    <div ng-controller="Ctrl">Search:
        <input ng-model="searchText">
        <div ng-repeat="(k,v) in items | myFilter:searchText">
            {{v}}
         </div>
    </div>
</body>

.JS

var myApp = angular.module('myApp', []);
myApp.controller('Ctrl', function($scope) {
  $scope.items = [{
    "id": "1",
    "username": "vishnu",
    "FromDate": "Wed Mar 02 2016 10:56:45 GMT+0530 (India Standard Time)",
    "selectedProject": "createwhimsy",
    "task": "fixing bugs",
    "time": "1"
  }, {
    "id": "2",
    "username": "seenu",
    "FromDate": "Wed Mar 02 2016 10:56:45 GMT+0530 (India Standard Time)",
    "selectedProject": "createwhimsy",
    "task": "working on ui",
    "time": "2"
  }, {
    "id": "3",
    "username": "sam",
    "FromDate": "Wed Mar 02 2016 10:56:45 GMT+0530 (India Standard Time)",
    "selectedProject": "bigiron",
    "task": "working on api",
    "time": "5"
  }, {
    "id": "4",
    "username": "vishnu",
    "FromDate": "Wed Mar 03 2016 10:56:45 GMT+0530 (India Standard Time)",
    "selectedProject": "timetracker",
    "task": "ui designing",
    "time": "1"
  }, {
    "id": "5",
    "username": "arun",
    "FromDate": "Wed Jan 02 2016 10:56:45 GMT+0530 (India Standard Time)",
    "selectedProject": "createwhimsy",
    "task": "fixing bugs",
    "time": "1"
  }, {
    "id": "6",
    "username": "seenu",
    "FromDate": "Wed Mar 01 2016 10:56:45 GMT+0530 (India Standard Time)",
    "selectedProject": "createwhimsy",
    "task": "working on ui",
    "time": "2"
  }, {
    "id": "7",
    "username": "sam",
    "FromDate": "Wed Mar 03 2016 10:56:45 GMT+0530 (India Standard Time)",
    "selectedProject": "createwhimsy",
    "task": "working on api",
    "time": "6"
  }, {
    "id": "8",
    "username": "vishnu",
    "FromDate": "Wed Mar 03 2016 10:56:45 GMT+0530 (India Standard Time)",
    "selectedProject": "timetracker",
    "task": "ui designing",
    "time": "4"
  }]
});

myApp.filter('myFilter', function() {
  return function(items, search) {
    var result = [];
    angular.forEach(items, function(value, key) {
      angular.forEach(value, function(value2, key2) {
        if (value2 === search) {
          result.push(value2);
        }
      })
    });
    return result;
  }
});

工作 Jsfiddle 演示

您可以通过这种方式简单地使用自定义过滤器:过滤器名称加上过滤器后缀

然后在控制器中简单地使用它作为:

function myCtrl($scope, filterFilter) { 
  var filteredRes = filterFilter(data, searchQuery);
}

现在filteredRes.length为您提供与搜索查询匹配的结果长度。

相关文章: