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...

Author: hippietrail, 2011-09-08

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.

 178
Author: gilly3,
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?

 68
Author: raphaelgontijolopes,
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.

 5
Author: Nadine Rose,
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