У меня есть массив объектов:Фильтрация массива в angular.js
var arr = [{id:1, name: 'frank', type: 'great'}, {id:2, name: 'john', type: 'good'}, {id:3, name: 'mark', type: 'great'}, {id:4, name: 'mary', type: 'bad'}];
В некоторых моментах, мне нужно напечатать 3 различных HTML-элементов. В каждом из этих элементов будет список имен, имеющих один и тот же тип.
Я мог бы сделать 3 разных итерации, где я просматриваю все предметы. Но мне интересно, есть ли лучший способ. Лучшее, с чем я пришел, это «фильтровать» этот массив для каждой итерации. Даже если я все еще буду цикл 3 раза, возможно, это лучший способ сделать это, , поскольку вы только просматриваете элементы в массиве, который вас действительно интересует.
Im не совсем уверен, как отфильтровать это. Im с использованием угловых.js. Если нет, я могу использовать простой javascript. Или есть лучшее решение для этого?
***** ***** EDIT
Благодаря Duffy за советы по фильтровальной функции. я, возможно, потребуется слишком много, но дело заключается в следующем:
Существует .html, что теперь содержит DIV так:
<div ng-repeat="person in peopleContainer.get_people()">
peopleContainer является завод в services.js-файле. Эта фабричная функция содержит как массив со всеми людьми, так и функции, чтобы добавить одного человека/вернуть массив со всеми людьми.
Теперь (забудьте про фильтрацию) директива ng-repeat выше не работает. Когда я добавляю нового человека, я вижу, что этот человек был добавлен в массив. Но ничего не происходит в div-контейнере. Нет ng-repeat. Может ли это быть потому, что массив с людьми находится в файле service.js? Если да: есть ли способ обойти это?
посмотрите на https://docs.angularjs.org/api/ng/filter/filter – duffy356