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

216
Visualizações
Solo empuje el objeto que aún no está en la matriz

Esta es mi función:

 const multiSelect = value => { let tmpArr = [...selectedPeople]; if (tmpArr.length === 0) { tmpArr.push(value); } else { tmpArr.map(item => { if (item.id !== value.id) { tmpArr.push(value); } else { return; } }); } setSelectedPeople(tmpArr); };

Quiero verificar la matriz para el nuevo valor comparándolo con todos los elementos. Si value === item item, la función de bucle debería return , pero si el valor aún no está en la matriz, debería empujarlo.

Este es un gran problema para mí, pero supongo que es un pequeño problema para ustedes.

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

0

Use Array.every() para verificar si la matriz no contiene un elemento con la misma id :

 const multiSelect = value => { const tmpArr = [...selectedPeople]; if(tmpArr.every(item => item.id !== value.id)) { tmpArr.push(value); } setSelectedPeople(tmpArr); };

Sin embargo, esto significa que está duplicando la matriz innecesariamente, mientras provoca una nueva representación, que no hará nada. Por lo tanto, verifique si el elemento ya forma parte de las personas selectedPeople mediante el uso de Array.some() , y si utiliza return para salir antes de la función. Si no es así, continúe con la clonación y actualice el estado:

 const multiSelect = value => { if(tmpArr.some(item => item.id === value.id)) { return; } const tmpArr = [...selectedPeople]; tmpArr.push(value); setSelectedPeople(tmpArr); };
about 4 years ago · Juan Pablo Isaza Relatório

0

Use find para verificar si el elemento ya está en la matriz. Además, no es necesario hacer una copia de la matriz de origen:

 const multiSelect = value => { if (!selectedPeople.find(item => item.id === value.id)) setSelectedPeople(selectedPeople.concat(value)) }
about 4 years ago · Juan Pablo Isaza Relatório

0

Otro enfoque.

 const multiSelect = value => setSelectedPeople([ ...selectedPeople, ...selectedPeople.some(({ id }) => id === value.id) ? [] : [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