Tengo un componente y un servicio:
Componente:
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);
}
}
Servicio:
@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;
}
}
Quiero obtener el elemento de persona con el Id ('personID'). La persona que obtengo de Routeparam. Para eso necesito el bucle foreach? Pero no he encontrado una solución para esto.
angular
typescript
angular2-services
trampa
fuente
fuente
Respuestas:
Necesitas usar el método
Array.filter
:o
Array.find
fuente
this.personService.getPersons()
regresaundefined
Supongamos que tengo debajo de la matriz:
Si queremos obtener un artículo con
Id = 1
yName = "oily skin"
, lo intentaremos de la siguiente manera:El resultado devolverá el skinName es "Skin graso".
Por favor, intente, gracias y un saludo!
fuente
Transforme la estructura de datos en un mapa si usa esta búsqueda con frecuencia
fuente
Una buena opción que aún no se menciona es utilizar la combinación
.find
con las funciones de flecha y la desestructuración. Tome este ejemplo de MDN .fuente
desde TypeScript puede usar el método nativo JS array filter ():
devuelve una matriz con solo elementos coincidentes de la matriz original (0, 1 o más)
Referencia: https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
fuente
Use este código en su servicio:
fuente
Prueba esto
fuente