Encuentra los índices de todos los registros duplicados en js

user13055304:

Supongamos que tengo una matriz como a continuación:

Arr1 = [12,30,30,60,11,12,30]

Necesito encontrar índice de elementos que se repiten en la matriz por ejemplo,

ans: 0,1,2,5,6

He probado este código, sino que está considerando solo elemento único para comprobar duplicados.

Maheer Ali:

En primer lugar obtener todos los duplicados utilizando filter()y luego utilizando reduce()conseguir que los índices de sólo aquellos elementos de la matriz que se encuentran endups

const arr = [12,30,30,60,11,12,30];
const dups = arr.filter(x => arr.indexOf(x) !== arr.lastIndexOf(x));
const res = arr.reduce((ac, a, i) => {
  if(dups.includes(a)){
    ac.push(i)
  }
  return  ac;
}, []);
console.log(res)

La complejidad del tiempo de algoritmo anterior es O(n^2). Si desea O(n)puede utilizar más adelante manera

const arr = [12,30,30,60,11,12,30];
const dups = arr.reduce((ac, a) => (ac[a] = (ac[a] || 0) + 1, ac), {})
const res = arr.reduce((ac, a, i) => {
  if(dups[a] !== 1){
    ac.push(i)
  }
  return  ac;
}, []);
console.log(res)

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=320391&siteId=1
Recomendado
Clasificación