Jak najít nejčastější položku pole? [Aktualizováno]

Lidé si stěžovali na problémy s výkonem u staré metody, a proto jsem tento článek aktualizoval na nejvýkonnější metodu pomocí hashmapy.

Jak najít nejběžnější položku pole v JavaScriptu? Něco, co se hodně vývojářů snaží zjistit. I když existuje spousta řešení, ale většina z nich je příliš komplikovaná a těžko pochopitelná.

Lidé hledají:
Jak,,,
 "Získejte prvek s nejvyšším výskytem v poli"
„Získejte položku, která se v poli objevuje nejčastěji“
"Napište funkci, abyste našli počet nejčastějších položek pole"

Což znamená, že existuje spousta lidí, kteří hledají nejlepší a snadné řešení, aby zjistili, jak získat nejběžnější položku pole.

Takže dnes to jen ukážu. "Tak začněme"

Krok 1

Nejprve musíme vytvořit pole.

var cats = ['Tom', 'Fluffy', 'Tom', 'Bella', 'Chloe', 'Tom', 'Chloe'];

Nyní máme celou řadu koček.

Krok 2

Potřebujeme funkci, která vezme naše pole jako argument a provede výpočet, pamatujte! můžeme také provést všechny výpočty bez funkce, Je to všechno jen otázka preference. V tomto příkladu jdu s iife (okamžitě vyvolaný funkční výraz).

(funkce (pole) {
  // jde sem kód
}) ();

Krok 3

Nyní vytvoříme tři (3) proměnné, jednu pro uložení naší hashmapy, druhou pro porovnání staré hodnoty s další hodnotou a poslední pro uložení poslední nejčastější hodnoty do pole.

(funkce (pole) {
  var countts = {}; // Zde budeme počítat výskyt položky
  var porovnat = 0; // Budeme porovnávat pomocí uložené hodnoty
  var mostFrequent; // Budeme ukládat nejčastější položky
}) ();

Krok 4

Nyní je čas udělat smyčku uvnitř naší funkce k provedení všech výpočtů.

// délka mezipaměti v proměnné len
pro (var i = 0, len = cats.length; i 
      if (počítá [slovo]> porovnat) {// počítá [slovo]> 0 (poprvé)
         porovnání = počet [slovo]; // sada porovnána s počtem [slovo]
         mostFrequent = kočky [i]; // set mostFrequent value
      }
 }

Pokud je výše uvedený kód pro některé z vás komplikovaný, dovolte mi to vysvětlit.

  1. Nejprve začínáme smyčku, která běží tak dlouho, dokud je „i - menší než délka pole koček“.
  2. Poté uvnitř této smyčky ukládáme první položku pole koček do proměnné „slovo“. Nyní kontrolujeme, zda má objekt počítání položku bez ohledu na to, jaká hodnota je uložena ve slově. Pokud neexistuje, nastavujeme počty [slovo] na 1.
    Například:
    Pokud slovo = „Tom“, pak se počítá [„Tom“] = 1; bude nastaveno, pokud počet [slovo] neexistuje.
  3. Nyní, v příští iteraci, pokud existuje počet [„Tom“], zvyšujeme hodnotu o 1, což bude jako počet [„Tom“] = počet [„Tom“] + 1;
    Výstup:
    [počet [[Tom “] je nyní 1] ,,,
    počet [„Tom“] = 1 + 1; Objekt nyní bude vypadat takto: {Tom: 2}
  4. Nyní v další iteraci, Pokud počet [„Fluffy“] neexistuje, bude výstup „nedefinovaný“, což znamená, že je-li podmínka pravdivá, a přidá ji do objektu počítání.
    Výstup:
    počet [„Fluffy“] = 1;
    Nyní bude objekt vypadat jako ,,, countts = {Tom: 2, Fluffy: 1};
  5. Stejný postup se bude opakovat pro každou položku. Pokud neexistuje, přidejte ji a pokud existuje, zvyšte její hodnotu o 1.
  6. Nyní pojďme mluvit o druhém, pokud prohlášení.
  7. Ve druhém příkazu if zkontrolujeme, zda je počet [slovo] větší než hodnota porovnání, která je na začátku naší smyčky „0“.
  8. Takže, protože počet [„Tom“] vydá „2“ a „2“ je větší než 0, podmínka bude pravdivá a kód uvnitř, pokud se příkaz spustí.
  9. Uvnitř příkazu if Kontrolujeme, zda se počítá [slovo] ,,, se počítá [„Tom“]> 0, pak nastavíme hodnotu porovnání na počty [„Tom“] ,,, Právě teď, když víme, se počítá [„Tom“ ] je „2“.
  10. Takže „2“ bude uloženo ve srovnávací proměnné.
  11. A v proměnné mostFrequent jsme název položky, která je větší než porovnání.
  12. Nyní v další iteraci kontrolujeme, zda počet [„Fluffy“] je větší než porovnání ,, Zde je hodnota porovnání „2“.
  13. Pokud tedy počet [„Fluffy“] je nyní „3“ než „, porovnávací hodnota bude nastavena na„ 3 “a protože„ Fluffy “je větší než porovnání.„ Fluffy “bude uložena do proměnné mostFrequent.

Tento proces se bude opakovat, dokud se smyčka s proměnnou „i“ nezdaří.

Nakonec dostaneme naši nejčastější hodnotu položky v proměnné mostFrequent. bude to vypadat takto ,,,

mostFrequent = 3

Nyní musíme jen zkontrolovat, co je uloženo v proměnné mostFrequent.

console.log (kočky [mostFrequent]);

Krok 5

Finální kousek umožňuje zabalit celou naši smyčku do našeho iife - (okamžitě vyvolaný funkční výraz).

var cats = ['Tom', 'Fluffy', 'Tom', 'Bella', 'Chloe', 'Tom', 'Chloe'];
var countts = {};
var porovnat = 0;
var mostFrequent;
(funkce (pole) {
   pro (var i = 0, len = array.length; i  porovnat) {
             porovnání = počet [slovo];
             mostFrequent = kočky [i];
       }
    }
  návrat MostFrequent;
}) (kočky);
Poznámka: Změnil jsem délku cats.length na array.length, protože nyní je náš argument funkce stejný jako naše pole koček.

Tak to je ,,, Takto najdete nejčastější položku v poli.

Výkon?? Tento příklad jsem testoval na jiném příkladu, který používá redukci k dosažení stejných výsledků. Tato metoda je však výkonnější než redukce, i když dosahuje stejných výsledků.

Zde zkontrolujte případ testu výkonu: Klikněte zde

Pokud je výše uvedený příklad stále komplikovaný, neváhejte mě komentovat nebo kontaktovat prostřednictvím || Twitter: @AmJustSam

Také, pokud jste nečetli můj předchozí článek o tom, jak se vertikálně vystředit v CSS, pak je zde odkaz - KLIKNĚTE ZDE

Pokud se vám líbí obsah, pak prosím, neváhejte doporučit tento článek ostatním, aby ostatní mohli těžit také z toho!