user13055304:
私は以下のように配列があるとします。
Arr1 = [12,30,30,60,11,12,30]
私は、配列などで繰り返される要素のインデックスを見つける必要があります
ans: 0,1,2,5,6
私が試した、このコードは、それは重複をチェックするだけで、単一の要素を検討しています。
Maheerアリ:
使用して、すべての重複まず取得filter()
してから使用してreduce()
である配列の要素のみの彼のインデックスを取得しますdups
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)
上記のアルゴリズムの時間複雑さがありますO(n^2)
。必要であればO(n)
、あなたは道の下に使用することができます
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)