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 LabyrinthQuiero 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.
A continuación se suponen a partir de la pregunta:
response.data es una matrizteamMemberteamMember tiene un accesorio llamado customFields que es una matrizname 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
item.teamMember.customFields usando el map con el elemento como el y el índice como i .elt e idx .map((el, i) => ({elt: el, idx: i}))
name coincida con ByLine (se puede cambiar a través del parámetro matchNameWith ) .filter(obj => obj.name === matchNameWith)
elt e idx . Dado que solo requerimos el índice, map la matriz para obtener solo el índice. .map(obj => obj.idx)
name , simplemente use la primera aparición. [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