Hagy egy egyedi tömb elemeit
Lássuk, milyen gyorsan fog működni.
Tegyük fel, a tömb 100 elemek. Ha ezek mind egyformák, akkor az eredmény állhat egyetlen elem és a belső hurok egyszer lefut. Ebben az esetben, minden rendben van.
És ha minden, vagy majdnem minden elemét különböző?
Ebben az esetben minden egyes eleme kell, hogy kb az összes jelenlegi tömb eredményét, majd - felvenni ezt a tömböt.
- Az első elem - 0 kerülni hozzáférési műveletek eredményeképpen elemek (amíg ki nem ürül).
- A második elem - fog kerülni egy hozzáférési művelet eredményeként elemekkel.
- A harmadik elem - fog kerülni 2 hozzáférni az eredmény elem.
- ... az n-edik elem - fog kerülni az n-1 hozzáférési műveletek eredményeképpen elem.
Összesen 0 + 1 + 2 + ... + n-1 = (n-1) * n / 2 = n 2/2 - N / 2 (az összege számtani sor), azaz a műveletek száma növekszik nagyjából négyzetes n.
Ez egy nagyon gyors növekedés. A elemek 100 - 4950 műveleteket 1000-499.500 (a fenti képletben).
Ezért, ez a megoldás alkalmas csak a kis tömbök. Ehelyett Az egymásba ágyazott meg és arr.indexOf. A helyzet nem fog változni, mert indexOf is keres brute force.
A megoldás, hogy a tárgy (gyors)
A megoldás, hogy a tárgy (gyors)
A legjobb módszer, hogy kiválassza egyedi húrok - használjon kiegészítő tárgy obj. Végtére is, a neve a objektum tulajdonságait, egyrészt - vonal, és a másik - mindig egyedi. Újra belép a tulajdonság az azonos nevű felülírja azt.
Például, ha a „nyúl” hit a tárgy egyszer (obj [ „nyúl”] = IGAZ), akkor a második ugyanaz hozzárendelés nem fog változni semmit.
A döntés az alábbi létrehoz egy objektumot obj = <> és írd bele minden húrok, mint tulajdon nevek. És akkor összegyűjti a tulajdonságait az objektum a tömb keresztül for..in. A másolatokat fognak tűnni.