Komentáře k článku
JavaScript Restart – Hurá na pole

Velkou bolestí JavaScriptu bývalo poměrně málo nativních funkcí pro práci s poli v JavaScriptu, a klávesy “F”, “O” a “R” jsou na klaviaturách našich živitelů značně osahané. Pole je, vzhledem k chudému počtu (2 v ES4) typů použitelných pro vytváření datových struktur, druhým nejužívanějším.
Mozkolam
Co je spatne na:
?
Re: Mozkolam
Vubec nic. Nicmene casto potrebuji iterovat pres prvky pole, ale index me nezajima.
Re: Mozkolam
Dokonce si troufám říci, že většinou mě index nezajímá.
Re: Mozkolam
Třeba to, že by to mělo být items.length místo length.items
Re: Mozkolam
Vzhledem k tomu, ze tak to bylo i v tom uplne prvnim kodu, tak jsem to povazoval proste za preklep a nevydel za nutne do toho ryt.
Re: Mozkolam
jo, je videt ze si vazne programatorskej buh, dokazal si pochopit i tak slozitou vec, jako je operator precedence …
Re: Mozkolam
Spatne na tom kode je, ze v kazdej iteracii sa zistuje velkost pola co zbytocne spomaluje slucku. ;-)
Re: Mozkolam
Nejboj se, že si to JIT nesrovná.
Re: Mozkolam
Pravdu mas predsedo. Dnes uz si vlastne runtime .length cachuje. Teraz som si vsimol, ++i. Asi uz starnem.
Typografické uvozovky/apostrofy v kódu?
To snad ne…
Re: Typografické uvozovky/apostrofy v kódu?
To je moje chyba, nevšiml jsem si, že můj markdown konverter je nastaven na psaní uměleckých děl. Sypu si na hlavu.
Zkousel jste vubec ten kod?
Hned na první pohled musí byt jasné že,
nebude fungovat a to nejenom kvůli tem uvozovkám, ale hlavně proto že, querySelectorAll nevrací pole, ale NodeList.
Ani slovo o tom ze for je lehce rychlejší než forEach, nebo co je důležitější, že for můžu přerušit kdežto forEach jak už název napovídá je pro všechny prvky.
Re: Zkousel jste vubec ten kod?
Musí tam být ještě konverze na pole, ale pak to není příliš vzor čitelnosti.
Něco jako tohle:
Hanba mě fackuje, tohle mi vážně ujelo.
Re: Zkousel jste vubec ten kod?
Opraveno jest.
Re: Zkousel jste vubec ten kod?
$.each lze přerušit btw taky. Přerušitelný forEach() je vlastně every().
for
Takže podle tebe je lepší miliarada callbaku než for cyklus, no poťež koště, víc takových jako ty a už abych si obědnal další ram a pár dalších jader
Re: for
No, každé má sve kouzlo. Minimálně se může hodit nový scope funkce, například.
Re: for
I když zápis je formou callbacku, o žádný callback se nejedná, jde o synchronní kód, takže tvá obava je lichá. :)
BTW, JS jede v jednom vlákně, takže to cos napsal je samozřejmě úplný blábol.
reduce
Funkce reduce neni zadny prapodivny vymysl. Je to jeden ze zakladnich stavebnich kamenu funkcionalniho programovani. To jen, aby si nekdo nemyslel, co to ti standardizatori pridali do Javascriptu za „blbinu“. Naopak – priblizuji ho vic k ciste funkcionalnim jazykum.
attachEvent
Raději bych použil addEventListener.
Re: attachEvent
Opraveno jest.
_
Na tyto věci je tu knihovna underscore.js.
Re: _
Nebo lodash…
Re: _
Nebo Transducers-js, které můžete použít rovnou s jakýmkoliv Array-like kolekcí případně s kolekcí implementujícím ES6
@@iterator
. A výhodou je mnohem menší paměťová náročnost a mnohem rychlejší zpracování.Stejné benefity získáte i immutabilních kolekcí, které posktuje např. knihovna Immutable.js.
A když se naučíte používat transducery nad poli, můžete pak rovnou začít pracovat i s event streamy, například pomocí knihovny Kefir.js, která má podpru pro transducery vestavěnou.
Re: _
K čemu je to dobré? Oproti underscore/lodash to vypadá o 2 levely složitější.
Re:
2 b. můžeš to tudíž používat na lazy kolekcích (z „pole“ všech přirozených čísel uděláš „pole“ všech prvočísel) aniž by se materializovaly
Javascript verzia
Dobry clanok ale privital by som keby bolo zmienene of ktorejze verzie JS su ktore funkcie podporovane a tiez ci su nejake nekompatibility v browseroch (vratane mobile). Popripade odkaz na shim…
Dakujem.