Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

243
Views
Obtenga el valor de la clave en una matriz anidada de objetos (RxJS Observable)

A través de mi testData$ observable, recibo datos que se ven así:

 [ { type: 'userInfo', data: [ { username: 'Sara', age: 27, }, { username: 'Max', age: 31, }, { username: 'Kim', age: 26, }, ], }, { type: 'cars', data: [ { type: 'Mercedes' }, ], }, ];

De testData$ quiero obtener la edad de Max y almacenarla en maxAge$ . He probado este código hasta ahora:

 public maxAge$ = this.testData$.pipe( map(x => x.filter(obj => obj.type === 'userInfo')), map(value => value[0]), pluck('data'), );

Devuelve la matriz de datos de esta manera:

 [ { username: 'Sara', age: 27, }, { username: 'Max', age: 31, }, { username: 'Kim', age: 26, }, ]

Pero ahora no sé cómo continuar desde aquí para obtener el valor de age de Max. En este caso, es importante no seleccionar solo el segundo elemento de la matriz de data porque el orden puede variar. ¿Que puedo hacer?

about 4 years ago · Santiago Gelvez
2 answers
Answer question

0

 const users = [ { username: 'Sara', age: 27, }, { username: 'Max', age: 31, }, { username: 'Kim', age: 26, }, ] cons maxage = users.find(user=>user.username=='MAX').age; public maxAge$ = this.testData$.pipe( map(x => x.find(obj => obj.type === 'userInfo').data), map(users => users.find(user=>user.username==='Max').age) );

about 4 years ago · Santiago Gelvez Report

0

Podría usar el operador de map RxJS con el método Array#find

 const testData = [{ type: 'userInfo', data: [{ username: 'Sara', age: 27, }, { username: 'Max', age: 31, }, { username: 'Kim', age: 26, }, ], }, { type: 'cars', data: [{ type: 'Mercedes' }, ], }, ]; const maxAge = testData .find(item => item.type === 'userInfo') .data .find(item => item.username === 'Max') .age; console.log(maxAge);

Así que la corriente se vería como

 public maxAge$ = this.testData$.pipe( map((testData: any) => testData .find(item => item.type === 'userInfo') .data .find(item => item.username === 'Max') .age ) );

Si no sabe si las propiedades estarán siempre disponibles (lo que podría dar lugar a errores undefined ), puede utilizar el operador de encadenamiento opcional ?. .

about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!