Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

329
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda