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

143
Visualizações
Una función que devuelve una matriz que es la intersección de otras dos matrices
function arraysCommon(array1, array2) { return array1.filter(x => array2.includes(x)); }

Esta función no funciona como yo quiero. Por ejemplo dado array1 = [1,2,3,2,1] y array2 = [5,4,3,2,1] devuelve [1,2,3,2,1] , ya que los elementos 1,2,3 se ven en ambas matrices. Pero quiero que devuelva [1,2,3] en ese orden ya que 1,2,3 se ven solo una vez en array2 y se tratan como entidades separadas.

Así que más o menos la funcionalidad debería ser esa

  • Cada elemento de la primera matriz se puede asignar como máximo a un elemento de la segunda matriz.
  • Los elementos duplicados en cada matriz se tratan como entidades separadas.
  • la primera matriz determina el orden

Intenté recorrer las matrices y verificar y comparar la cantidad de duplicados en cada matriz, pero parece que no puedo hacer que la lógica funcione correctamente. ¿Hay una manera diferente de abordar esto?

Adjunto una imagen de dos diagramas de Venn que podrían aclarar la diferencia. Adjunto una imagen de dos diagramas de Venn que podrían aclarar la diferencia.

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

0

Desafortunadamente, se vuelve más complicado porque necesita saber qué números ya ha agregado. En este caso, necesita una matriz temporal para contener el resultado. También necesitamos rastrear si un número existe en la matriz dos veces.

Prueba esto:

 function arraysCommon(array1, array2) { //Copy array2 by duplicating and spreading the elements into another array. var copyArray2 = [...array2]; //Temperary Array var temp = []; for (let x of array1) { //Check if the element is in the first array and not already added to the temp array if (copyArray2.includes(x)) { temp.push(x); //Remove item from copy array2 so it cannot be used anymore copyArray2.splice(copyArray2.indexOf(x), 1); } } //Return the temp array return temp; } console.log(arraysCommon([1,2,3,2,1], [5,4,3,2,1])) console.log(arraysCommon([1,2,3,2,1], [2,2,3,3,4]))

about 4 years ago · Juan Pablo Isaza Relatório

0

¡Esto debería funcionar como querías!

 // test 1 const array1 = [1,4,1,1,5,9,2,7]; const array2 = [1,8,2,5,1]; // test 2 const array3 = [1,2,3,2,1]; const array4 = [5,4,3,2,1]; const mapper = (array1, array2) => { var obj = {}; array1.forEach((x, indexX) => { array2.forEach((y, indexY) => { if (x == y) { if (!Object.values(obj).includes(indexX) && !obj.hasOwnProperty(indexY)) { obj[indexY] = indexX; return; } } }) }) return Object.values(obj).sort().map(values => array1[values]); } console.log(mapper(array1, array2)); console.log(mapper(array3, array4));

Espero que esto ayude. Salud.

about 4 years ago · Juan Pablo Isaza Relatório

0

Con la clasificación y el conteo esto debería ser posible. Dado que está incrementando cuando encuentra caracteres similares, esto debería estar bien:

 const array1= [1,4,1,1,5,9,2,7]; const array2 = [1,8,2,5,1] const array3 = [1,2,3,2,1]; const array4 = [5,4,3,2,1,2] const array5 = [1,2,3,2,1]; const array6 = [2,2,3,3,4] function arraysCommon(array1, array2) { const ans = []; array1.sort(); array2.sort(); let j = 0; let i = 0; while(i<array1.length && j<array2.length){ if(array1[i] === array2[j]){ ans.push(array1[i]); i++; j++; } else if(array2[i] > array1[j]){ i++; } else{ j++; } } console.log(ans); } arraysCommon(array1,array2); arraysCommon(array3,array4); arraysCommon(array5,array6);

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