Ich habe eine Komponente und einen Service:
Komponente:
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);
}
}
Bedienung:
@Injectable()
export class PersonService {
getPersons(){
var persons: Person[] = [
{id: 1, firstName:'Hans', lastName:'Mustermann', email: '[email protected]', company:'Test', country:'DE'},
{id: 2, firstName:'Muster', lastName:'Mustermann', email: '[email protected]', company:'test', country:'DE'},
{id:3, firstName:'Thomas', lastName:'Mustermann', email: '[email protected]', company:'test', country:'DE'}
];
return persons;
}
}
Ich möchte das Personenelement mit der ID ('personID') erhalten. Die PersonID, die ich von Routeparam bekomme. Dafür brauche ich die foreach-Schleife? Aber ich habe keine Lösung dafür gefunden.
Antworten:
Sie müssen folgende Methode anwenden
Array.filter
:oder
Array.find
quelle
this.personService.getPersons()
kehrt zurückundefined
Angenommen, ich habe unten Array:
Wenn wir Artikel mit
Id = 1
und erhalten möchten,Name = "oily skin"
versuchen wir Folgendes:Das Ergebnis gibt den SkinName "Fettige Haut" zurück.
Bitte probieren Sie es aus, danke und viel Respekt!
quelle
Transformieren Sie die Datenstruktur in eine Karte, wenn Sie diese Suche häufig verwenden
quelle
Eine nette Option, die noch nicht erwähnt wurde, ist die Kombination
.find
mit Pfeilfunktionen und Destrukturierung. Nehmen Sie dieses Beispiel aus MDN .quelle
In TypeScript können Sie die native JS-Array-Methode filter () verwenden:
Es gibt ein Array mit nur übereinstimmenden Elementen aus dem ursprünglichen Array zurück (0, 1 oder mehr).
Referenz: https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
quelle
Verwenden Sie diesen Code in Ihrem Dienst:
quelle
Versuche dies
quelle