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

308
Visualizações
Cómo hacer coincidir valores duplicados en matrices anidadas en JS

Tengo una matriz que contiene matrices anidadas que se crean dinámicamente, se ve así:

 [['1', '2'],['1','3', '4'],['1', '3']]

Estoy tratando de implementar la lógica AND obteniendo solo valores duplicados de estas matrices. Mi salida esperada aquí sería ['1'] ya que todas las matrices anidadas deben contener el mismo valor.

 // [['1', '2'],['1','3', '4'],['1', '3']] const arrays = [...new Set(response)].filter(newSet => newSet.length > 0); const builder = []; // array of all the id's no longer needed // [[],[],[]] arrays.forEach(arr => { // [] arr.forEach(value => { // [[], [], []] const found = arrays.filter(a => a.find(v => v === value)); if (found.length === 0) builder.push(value); }); }); console.log(builder); // empty []

Esto me da una matriz vacía debido al filter() . ¿Cómo podría devolver una matriz de valores que contienen todas las matrices (3 en este caso, pero podrían ser más)?

El resultado esperado con la entrada anterior sería ["1"] . Cualquier ayuda apreciada.

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

0

por lo que entiendo, necesitas los elementos comunes de toda la matriz

 let response1 = [['1', '2'],['1','3', '4'],['1', '3']] let response2 = [['1', '2', '3'],['1','3', '4'],['1', '3']] const getCommon = res => [...new Set(res.flat())].filter(a => res.every(c => c.includes(a))); console.log(getCommon(response1)) console.log(getCommon(response2))

ACTUALIZAR Aparentemente, la transformación establecida es innecesaria ya que de todos modos tiene que dar los elementos comunes a cada matriz, por lo que el filtrado de res[0] debería ser suficiente

 let response1 = [['1', '2'],['1','3', '4'],['1', '3']] let response2 = [['1', '2', '3'],['1','3', '4'],['1', '3']] const getCommon = res => res[0].filter(a => res.every(c => c.includes(a))); console.log(getCommon(response1)) console.log(getCommon(response2))

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede crear un objeto de conteo que tenga la frecuencia de cada número y simplemente verificar si la frecuencia de un número es igual a la longitud de la matriz original.

 const getIntersectVals = (arrayOfVals)=>{ const freqs = {}; for(let arr of arrayOfVals){ for(let val of arr){ if(freqs[val]) freqs[val]++; else freqs[val] = 1; } } const uniqueVals = Object.keys(freqs); const correctVals = uniqueVals.filter(elem=>{ return freqs[elem] === arrayOfVals.length; }) return correctVals; } const arrayOfVals = [['1', '2'],['1','3', '4'],['1', '3']]; console.log(getIntersectVals(arrayOfVals))

about 4 years ago · Juan Pablo Isaza Relatório

0

Intersección de Lodash si no te importa

 const arrayOfVals = [['1', '2'],['1','3', '4'],['1', '3']]; const result = _.intersection(...arrayOfVals); console.log(result);
 .as-console-wrapper{min-height: 100%!important; top: 0}
 <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>

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