web-dev-qa-db-fra.com

Rechercher un objet par sa propriété dans un tableau d'objets avec le chemin angular

J'ai un tableau comme ci-dessous

var myArray = [{'id':'73','name':'john'},{'id':'45','name':'Jass'}, etc.]

Maintenant, j'ai un id 73 comment sélectionner cet objet particulier dans le tableau. Je vois que je peux le faire facilement avec jQuery avec grep Y a-t-il une manière angulaire de faire cela?

Étant donné que la plupart des utilisateurs qui développent une application avec angular obtiennent toujours les données d'un tableau d'objets (principalement pour la table), une fonction d'assistance devrait exister pour cela?

Afin que je puisse changer les données de la ligne avec l'ID de la ligne en mettant à jour le tableau d'objets.

Je ne veux pas lier cela en vue. Je veux manipuler les données et mettre à jour les données avec la fonction.

Par exemple. J'ai une liste de table. Si l'utilisateur final édite une ligne de la table, j'ai l'ID de l'objet. Après que l'utilisateur final ait cliqué sur save, je dois mettre à jour le tableau, puis revenir à la liste des tables.

41
rram

vous pouvez utiliser le filterhttps://docs.angularjs.org/api/ng/filter/filter d'angular

dans votre contrôleur:

$filter('filter')(myArray, {'id':73}) 

ou dans votre HTML

{{ myArray | filter : {'id':73} }}
71
M B

Que diriez-vous de JavaScript simple? Plus d'informations sur Array.prototype.filter() .

var myArray = [{'id': '73', 'name': 'john'}, {'id': '45', 'name': 'Jass'}]

var item73 = myArray.filter(function(item) {
  return item.id === '73';
})[0];

// even nicer with ES6 arrow functions:
// var item73 = myArray.filter(i => i.id === '73')[0];

console.log(item73); // {"id": "73", "name": "john"}
41
Timo

Pour une réponse complète de M B _, si vous souhaitez accéder à un attribut spécifique de cet objet déjà filtré du tableau dans votre code HTML, vous devrez procéder comme suit:

{{ (myArray | filter : {'id':73})[0].name }}

Donc, dans ce cas, il imprimera john dans le code HTML.

Cordialement!

6
David Corral

La solution qui fonctionne pour moi est la suivante

$filter('filter')(data, {'id':10}) 
0
Jorge Santos Neill