Encontre os índices de todos os registros duplicados em js

user13055304:

Suponhamos que tem uma matriz como a seguir:

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

Preciso encontrar índice de elementos que se repetem na matriz por exemplo,

ans: 0,1,2,5,6

Eu tentei este código, mas ele está considerando elemento simplesmente única para verificar duplicatas.

Maheer Ali:

Primeiro obtenha todas as duplicatas usando filter()e, em seguida, usando reduce()obter ele índices de apenas os elementos do array que estão emdups

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)

A complexidade de tempo do algoritmo acima é O(n^2). Se você quiser O(n)você pode usar abaixo maneira

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)

Acho que você gosta

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