2016-12-19 2 views
0

Я пытаюсь фильтровать массив JSON. В моем примере значение массива JSON являетсяФильтр json с angularjs

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

Как я могу фильтровать фамилия начинается с (например, «Джо»)? Я устал это:

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/filter – 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

Обновлено. Попробуйте это, он должен работать. –

Смежные вопросы