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

151
Visualizações
JavaScript; empujando elementos comunes de 2 listas a una nueva lista
let listOne = [Bill, Joe, Trever, Neil, Jim, Pam, Michael] let listTwo = [Petter, Pam, Steven, Jim, Michael, Scott]

Tengo dos listas pero quiero crear una nueva lista con solo los nombres en ambas listas.

 [Jim, Pam, Michael]

Lo que hice:

Creo un bucle anidado para insertar cada nombre en una nueva lista

en que necesito ayuda:

Siento que hay una mejor manera de hacer esto. sin tener que anidar mis bucles. Quizás de alguna manera filtrando ambas listas simultáneamente de alguna manera

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

0

Puede utilizar Set y filter aquí. Verificar la existencia del name en Set es eficiente, si vas a usar has method of set .

 let listOne = ["Bill", "Joe", "Trever", "Neil", "Jim", "Pam", "Michael"]; let listTwo = ["Petter", "Pam", "Steven", "Jim", "Michael", "Scott"]; const set = new Set(listOne); const result = listTwo.filter(name => set.has(name)); // or // const result = listTwo.filter(set.has.bind(set)); console.log(result);

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar Array.prototype.reduce, hacer que la devolución de llamada busque en la otra lista y solo inserte el nombre si está en la otra lista.

 listOne.reduce((prev, cur)=>{ if(listTwo.includes(cur)){ prev.push(cur); } return prev; });

EDITAR: después de más pruebas, Array.prototype.reduce requiere que el primer y el segundo argumento tengan un tipo de número, por lo que recomendaría usar el filtro en su lugar. (ver otras respuestas)
Sin embargo, si desea usar reducir, tendría que usar algo como esto:

 let listOne = ["Bill", "Joe", "Trever", "Neil", "Jim", "Pam", "Michael"]; let listTwo = ["Petter", "Pam", "Steven", "Jim", "Michael", "Scott"]; let results = []; listOne.reduce((prev, cur)=> { if(listTwo.includes(cur)){ results.push(cur); } return; }); console.log(results); // Prints [ 'Jim', 'Pam', 'Michael' ]

Mi recomendación es usar la respuesta aceptada por Vitor Franca y usar Array.prototype.filter

about 4 years ago · Juan Pablo Isaza Relatório

0

Puedes hacer algo como esto:

 let listOne = [Bill, Joe, Trever, Neil, Jim, Pam, Michael] let listTwo = [Petter, Pam, Steven, Jim, Michael, Scott] let result = listOne.filter(item => listTwo.includes(item))
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