• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

203
Views
¿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.

almost 3 years ago · Juan Pablo Isaza
2 answers
Answer question

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]

almost 3 years ago · Juan Pablo Isaza Report

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
almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error