Potřebuji zkontrolovat pole JavaScriptu, abych zjistil, zda existují nějaké duplicitní hodnoty. Jaký je nejjednodušší způsob, jak to udělat? Potřebuji jen zjistit, co jsou duplicitní hodnoty – ve skutečnosti nepotřebuji jejich indexy ani kolikrát jsou duplikovány.
Vím, že mohu procházet polem a zkontrolovat shodu všech ostatních hodnot, ale zdá se, že by měl existovat jednodušší způsob.
Podobná otázka:
- Získejte všechny jedinečné hodnoty v poli JavaScriptu (odstraňte duplicity)
Odpověď
Pole můžete seřadit a poté jej projít a poté zjistit, zda je další (nebo předchozí) index stejný jako aktuální. Za předpokladu, že je váš třídicí algoritmus dobrý, mělo by být menší než O(n 2 ):
const findDuplicates = (arr) => { let sorted_arr = arr.slice().sort(); // You can define the comparing function here. // JS by default uses a crappy string compare. // (we use slice to clone the array so the // original array won't be modified) let results = []; for (let i = 0; i < sorted_arr.length - 1; i++) { if (sorted_arr[i + 1] == sorted_arr[i]) { results.push(sorted_arr[i]); } } return results; } let duplicatedArray = [9, 9, 111, 2, 3, 4, 4, 5, 7]; console.log(`The duplicates in ${duplicatedArray} are ${findDuplicates(duplicatedArray)}`);
V případě, že se chcete vrátit jako funkce pro duplikáty. Toto je pro podobný typ případu.
Reference:https://stackoverflow.com/a/57532964/8119511