Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

256
Vistas
¿Cómo encontrar el índice del elemento de matriz por su nombre dentro de una función?

Tengo una función js que lee un archivo JSON y los genera con un bucle:

 response.data.forEach((item,index)=>{ items += " <div class='eleman'>" + "<img src='"+item.teamMember.profileImageUrl+"' width='100%'>" + "<div class='content list'>" + "<div class='fullname'>"+item.teamMember.fullName+"</div>"+ ...

Hay una matriz en ese json llamada customFields (item.teamMember.customFields) y podría tener de 0 a 7 índices, el ejemplo de uno de ellos debería ser:

 id : 1202 name : Tags type : SingleLineText value : Composer,Music,Pan's Labyrinth

Quiero obtener el valor del índice cuyo nombre es ByLine. Y utilícelo con el nombre completo div.

Probé varios códigos pero no funcionaron. Agradecería si alguien puede ayudar.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

A continuación se suponen a partir de la pregunta:

  1. response.data es una matriz
  2. Cada elemento en este Array es un objeto
  3. Cada uno de estos objetos tiene un accesorio llamado teamMember
  4. Cada teamMember tiene un accesorio llamado customFields que es una matriz
  5. Cada elemento de la matriz (en el punto 4 anterior) tiene un name de apoyo

El objetivo es filtrar solo aquellos elementos de la matriz customFields donde el name del elemento coincide con el valor ByLine .

Una forma posible de lograr esto:

 const getIndexOfByLine = (arr = item.teamMember.customFields, matchNameWith = 'ByLine') => ( arr .map((el, i) => ({elt: el, idx: i})) .filter(obj => obj.name === matchNameWith) .map(obj => obj.idx) [0] );

NOTA: Si más de 1 elemento tiene el name 'ByLine', solo se devuelve el primer índice.

Explicación

  • Iterar a través de la matriz item.teamMember.customFields usando el map con el elemento como el y el índice como i .
  • Para cada elemento de la matriz, devuelva un objeto con dos accesorios, a saber, elt e idx

.map((el, i) => ({elt: el, idx: i}))

  • En la matriz resultante, aplique el filtro y mantenga solo aquellos elementos donde el name coincida con ByLine (se puede cambiar a través del parámetro matchNameWith )

.filter(obj => obj.name === matchNameWith)

  • Ahora, tenemos una matriz con objetos que tienen las dos propiedades elt e idx . Dado que solo requerimos el índice, map la matriz para obtener solo el índice.

.map(obj => obj.idx)

  • En caso de que hubiera más de 1 elementos que tuvieran 'ByLine' como name , simplemente use la primera aparición.

[0]

about 4 years ago · Juan Pablo Isaza Denunciar

0

Usé esto y funcionó

 let byline=item.teamMember.customFields.filter(checkbyline); function checkbyline(fields) { if (fields.name == 'Byline') { return fields.value} else {return } }

y usarlo en la salida HTML

 byline[0].value
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda