2016-12-19 100 views
0

我想过滤一个JSON数组。在我的例子中,JSON数组的值是过滤JSON与angularjs

vm.users = [{ "fname": "Antoan", "lname": "Jonson", "Address": "Address1" }, ... ] 

如何以姓氏开头(例如'Jo')?我厌倦了这样:

angular.module('MyApp', ['ngMaterial', 'ngMessages', ]) 
.controller('AdminController', function ($scope, $http, $filter, $location, $sce) { 
MyApp.filter('myFilter', function() { 

    return function (input, term) { 
     var output = []; 
     angular.forEach(input, function (value, index) { 
      if (value.lname.startsWith(term)) { 
       output.push(value); 
      } 
     }); 
     return output; 
    } 
}); 
}); 
+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array叫它/过滤器 – str

回答

1

使用自定义过滤器

myApp.filter('myFilter', function() { 

return function(input, term) { 
    var output=[]; 
    angular.forEach(input,function(value,index){ 
     if(value.lname.startsWith(term)){ 
      output.push(value); 
     } 
    }); 
    return output; 
} 
}); 

然后用

var filtered = $filter('myFilter')(JSON.parse(vm.users), term); 
+0

谢谢。你的代码给我错误。我是否需要将顶部声明为函数。 – user6934713

+0

应用程序将是您的应用程序名称,您需要声明它 –

+0

我更改了上面的代码。你能证实我是否正确吗?返回部分仍然出现错误。 – user6934713

-1

试试这个,

vm.users.filter(function (user) { 
    return user.lname.includes(term); 
}); 

希望这有助于。

+0

已更新。尝试这应该工作。 –