Jaka jest różnica między.Mapa,każdy, i.forEach?
Zawsze zastanawiałem się, jaka jest różnica między nimi. Wszyscy robią to samo...
3 answers
Różnica jest w wartościach zwracanych.
.map()
zwraca nową tablicę obiektów utworzoną przez wykonanie pewnych czynności na oryginalnym elemencie.
.every()
Zwraca wartość logiczną - true, jeśli każdy element w tej tablicy spełnia podaną funkcję testową. Ważną różnicą od .every()
jest to, że funkcja testowa nie zawsze może być wywołana dla każdego elementu w tablicy. Gdy funkcja testing zwróci false dla dowolnego elementu, nie będzie już tablicy elementy są iteracyjne. Dlatego funkcja testowania powinna zwykle nie mieć skutków ubocznych .
.forEach()
zwraca nothing - iteracja tablicy wykonującej daną akcję dla każdego elementu w tablicy.
Edit: Oto MSDN Docs jeśli wolisz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-12 07:31:17
Odpowiedź Gilly3 jest świetna. Chciałem tylko dodać trochę informacji o innych typach funkcji "loop through elements".
-
.every()
(zatrzymuje zapętlanie za pierwszym razem, gdy iterator zwróci false lub something falsey) -
.some()
(zatrzymuje zapętlanie za pierwszym razem, gdy iterator zwraca true lub something truthy) -
.filter()
(tworzy nową tablicę w tym elementy, w których funkcja filtra zwraca true i pomijając te, w których to zwraca false) -
.map()
(wytworzy nową tablicę z wartości zwracanych przez iterator function) -
.reduce()
(buduje wartość przez wielokrotne wywołanie iteratora, przekazywanie poprzednich wartości; szczegóły w specyfikacji; przydatne do sumowania zawartości tablicy i wielu innych rzeczy) -
.reduceRight()
(Jak zmniejszyć, ale działa w malejąco, a nie kolejność rosnąca)
Podziękowania dla: T. J. Crowder za-każdy ponad tablica w JavaScript?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:03:02
[1]}innym rozważeniem powyższych wielkich odpowiedzi jest łańcuchowanie. Za pomocą forEach () nie możesz łączyć się w łańcuchy, ale za pomocą map () Możesz.
Na przykład:
var arrayNumbers = [3,1,2,4,5];
arrayNumbers.map(function(i) {
return i * 2
}).sort();
Z .forEach (), nie możesz tego zrobić .sort (), pojawi się błąd.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-09 17:46:31