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

330
Visualizações
How to remove duplicates from the array of array in javascript?

I have an array let arr = [ ['A1', 'B2'], ['B1', 'A1'], ['A2','B1'], ['A1', 'B1']]. Which has duplicate ['B1', 'A1'] and ['A1', 'B1'] of different direction still it should be removed and expected output should be [ ['A1', 'B2'], ['B1', 'A1'], ['A2','B1']].

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

0

You can use Array.reduce() to get the required result, for each element in the input array we create a key.

We'll use this key to create an entry in a map object, and duplicate items will be eliminated since they will share the same key.

Once we have all items in our map, we'll use Object.values() to get the resulting (unique) array.

let arr = [ ['A1', 'B2'], ['B1', 'A1'], ['A2','B1'], ['A1', 'B1']]

const result = Object.values(arr.reduce((acc, el) => {
    // Create a key based on what we consider a duplicate.
    let key = el.sort().join("-");
    acc[key] = acc[key] || el;
    return acc;
}, {}));

console.log('Result:', result)
    
.as-console-wrapper { max-height: 100% !important; top: 0; }

Another approach is to use the lodash function uniqBy using the iteratee el => el.sort().join('-'):

let arr = [ ['A1', 'B2'], ['B1', 'A1'], ['A2','B1'], ['A1', 'B1']]

const result = _.uniqBy(arr, el => el.sort().join('-'));
console.log('Result:', result)
    
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

about 4 years ago · Juan Pablo Isaza Relatório

0

You could filter with a Set with normalized values (sorted and joined).

const
    getValue = ([...a]) => a.sort().join(),
    array = [['A1', 'B2'], ['B1', 'A1'], ['A2', 'B1'], ['A1', 'B1']],
    result = array.filter((s => a => (v => !s.has(v) && s.add(v))(getValue(a)))(new Set));

console.log(result);
    

about 4 years ago · Juan Pablo Isaza Relatório

0

function removeRepeatedArray(arrays){
 const map = new Map();
 
 for(let i = 0; i < arrays.length; i++){
   // convert each array to a unique key 
   // subarrays needs to be sorted first
   const key = arrays[i].sort().join("");
 
   if(map.has(key)){
     // if exists replace it with undefined
     // you can use splice method to remove the repeated array it index i
     // I am using filter to keep the logic simple
     // using splice will require updating i
     arrays[i] = undefined;
   }else{
     map.set(key, arrays[i])   
   }
 }

  return arrays.filter(el => el !== undefined);
}
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