Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

261
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda