Autor | Zpráva | ||
---|---|---|---|
Wan Profil * |
#1 · Zasláno: 28. 12. 2019, 20:32:01
Ahoj,
jaký je prosím rozdíl mezi tímto cyklem items.forEach(function(item){ if (item.parent_id === targetId) children.push(item); }); a tímto cyklem for (var item in items){ if (item.parent_id === targetId) children.push(item); } ten druhý nefunguje, proč? Děkuji |
||
Radek9 Profil |
#2 · Zasláno: 29. 12. 2019, 12:21:16
Wan:
Metoda forEach slouží pro procházení polí. Oproti klasickému cyklu je to však mírně pomalejší. Zároveň nemáš k dispozici příkazy continue (ten se dá simulovat pomocí return ) a break (ten se ve forEach simulovat nedá, musel bys použít every nebo some ).
Cyklus for...in slouží pro procházení klíčů objektu. Nikoli pro procházení polí.
Co asi hledáš, je cyklus for...of :
for (var item of items){ if (item.parent_id === targetId) children.push(item); } |
||
Tomášeek Profil |
#3 · Zasláno: 29. 12. 2019, 13:53:47
Radek9:
Nejsem úplně JS profík, ale pokud podpora for...of není dokonalá (přiznám se, že tento cyklus neznám), nestačí použít klasický
for (var i = 0; i < items.length; i++) {...} ? |
||
Radek9 Profil |
#4 · Zasláno: 29. 12. 2019, 14:07:23
Tomášeek:
Jistě, stačí. Jen je to takové ukecané. :-) Navíc cyklus for...of umí procházet libovolnou kolekci (např. Map, Set nebo obecný iterátor). A když už jsme u toho, tak v tomto konkrétním případě ([#1]) dává mnohem větší smysl použít metodu filter :
const children = items.filter(item => item.parent_id === targetId) |
||
Tomášeek Profil |
#5 · Zasláno: 29. 12. 2019, 14:13:24
Radek9:
Díky za vysvětlení :-) |
||
Časová prodleva: 1 rok
|
0