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

253
Visualizações
¿Cómo representar un elemento determinado una vez en jsx usando el mapa?

¿Cómo representar un elemento una vez en una función de mapa? Tengo una matriz de objetos y quiero representar el valor del color solo una vez en otro componente, traté de insertar el color en una matriz y lo verifiqué, pero como está dentro del ciclo, se agrega instantáneamente, y esta verificación fallará, el punto es que no quiero que el mismo color se reproduzca dos veces, si se encuentra, solo una vez ... ¿alguna buena solución para este caso?

 const items =[{car : 'bmw', color : 'black'}, {car: 'opel', color :'black'}, {car:'landrover',color:'red'}] {items.map((item, i) => { let arr = []; //arr.push(items[i].color); return ( <React.Fragment> {arr.includes(items[i]) ? undefined : <colors img={items[i]?.color} /> } <items key={item.id} Car={item.car} /> </React.Fragment> ); })} // Expected result // black color component // 'bmw' // 'opel' // red color component // 'landrover'

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

 const items =[ {car : 'bmw', color : 'black'}, {car: 'opel', color :'black'}, {car:'landrover',color:'red'} ] //Expected Outcome /* [ { color: 'black' cars: ['bmw','opel'] }, { color: 'black' cars: ['bmw','opel'] } ] */ const finalResult = items.reduce((acc, cur, arr) => { let res = [...acc]; const matchIndex = res.findIndex(obj => obj.color === cur.color); if (matchIndex === -1) { res.push({ color: cur.color, cars: [cur.car] }) } else { res[matchIndex].cars.push(cur.car) } acc = res; return acc; }, [] ) console.log(finalResult); finalResult.forEach(colorObject => { colorObject.cars.forEach(car => { console.log( `Your Component with Color ${colorObject.color} and Car ${car}` ); }) })

about 4 years ago · Juan Pablo Isaza Relatório

0

Le sugiero que primero clasifique sus elementos por color y luego solo represente el componente de color cuando el color difiera del elemento anterior:

 items .sort((a, b) => a.color.localeCompare(b.color)) .map((item, index, sortedItems) => { const colorChanged = !index || item.color !== sortedItems[index - 1].color return ( <> { colorChanged && <colors img={items[i]?.color} /> } <items key={item.id} Car={item.car} /> </> ) })

Editar: Como index es un número entero >= 0, !index se evaluará como verdadero exactamente cuando index === 0 lo hace.

about 4 years ago · Juan Pablo Isaza Relatório

0

const itemColors = items .map(({ color }) => color) // create array of colors .filter((value, index, self) => self.indexOf(value) === index) // remove duplicates // do your rendering here

O usando lodash

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