Angular 2 TypeScript comment trouver un élément dans Array

J’ai un composant et un service:

Composant:

export class WebUserProfileViewComponent { persons: Person []; personId: number; constructor( params: RouteParams, private personService: PersonService) { this.personId = params.get('id'); this.persons = this. personService.getPersons(); console.log(this.personId); } } 

Un service:

 @Injectable() export class PersonService { getPersons(){ var persons: Person[] = [ {id: 1, firstName:'Hans', lastName:'Mustermann', email: 'mustermann@test.com', company:'Test', country:'DE'}, {id: 2, firstName:'Muster', lastName:'Mustermann', email: 'mustermann@test.com', company:'test', country:'DE'}, {id:3, firstName:'Thomas', lastName:'Mustermann', email: 'mustermannt@tesrt.com', company:'test', country:'DE'} ]; return persons; } } 

Je veux obtenir l’élément Personne avec l’identifiant (‘personID’). La personne que je reçois de Routeparam. Pour cela j’ai besoin de la boucle foreach? Mais je n’ai pas trouvé de solution pour cela.

Merci d’avance!

Vous devez utiliser la méthode Array.filter :

 this.persons = this.personService.getPersons().filter(x => x.id == this.personId)[0]; 

ou Array.find

 this.persons = this.personService.getPersons().find(x => x.id == this.personId); 

Supposons que j’ai sous tableau:

 Skins[ {Id: 1, Name: "oily skin"}, {Id: 2, Name: "dry skin"} ]; 

Si nous voulons obtenir un élément avec Id = 1 et Name = "oily skin" , nous allons essayer comme ci-dessous:

 var skinName = skins.find(x=>x.cd == "1").Name; 

Le résultat retournera le skinName qui est “Peau grasse”.

S’il vous plaît essayer, merci et meilleures salutations!

Transformez la structure de données en carte si vous utilisez fréquemment cette recherche

 mapPersons: Map; // prepare the map - call once or when person array change populateMap() : void { this.mapPersons = new Map(); for (let o of this.personService.getPersons()) this.mapPersons.set(o.id, o); } getPerson(id: number) : Person { return this.mapPersons.get(id); } 

Utilisez ce code dans votre service:

 return this.getReports(accessToken) .then(reports => reports.filter(report => report.id === id)[0]); 

à partir de TypeScript, vous pouvez utiliser la méthode native du filtre de tableau JS:

 let filteredElements=array.filter(element => element.field == filterValue); 

il retourne un tableau avec seulement les éléments correspondants du tableau d’origine (0, 1 ou plus)

Référence: https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/filter