Я завжди цікавився, в чому різниця між ними. Вони, здається, роблять те саме ...
Я завжди цікавився, в чому різниця між ними. Вони, здається, роблять те саме ...
Відповіді:
Різниця полягає у повернених значеннях.
.map()
повертає новий масив об'єктів, створений за допомогою певних дій над оригінальним елементом.
.every()
повертає булеву - true, якщо кожен елемент у цьому масиві задовольняє надану функцію тестування. Важлива відмінність у .every()
тому, що тестова функція не завжди може бути викликана для кожного елемента масиву. Після того, як функція тестування поверне помилковий для будь-якого елемента, більше елементів масиву не повторюється. Тому функція тестування зазвичай не повинна мати побічних ефектів .
.forEach()
не повертає нічого - це повторює масив, виконуючи задану дію для кожного елемента в масиві.
Про ці та багато інших методів ітерації масиву читайте на MDN .
відповідь gilly3 чудова. Я просто хотів додати трохи інформації про інші типи функцій "циклу через елементи".
.every()
(перестає циклічно вперше, коли ітератор повертає помилку чи щось фальсифікує).some()
(перестає циклічно вперше, коли ітератор повертає істину чи щось тривожне).filter()
(створює новий масив, що включає елементи, де функція фільтра повертає істинні та опускаючи ті, де вона повертає помилкові).map()
(створює новий масив із значень, повернутих функцією ітератора).reduce()
(створює значення шляхом повторного виклику ітератора, передаючи попередні значення; деталі див. у специфікації; корисно для підсумовування вмісту масиву та багатьох інших речей).reduceRight()
(як-от зменшення, але працює у порядку зменшення, а не у порядку зростання)кредит: TJCrowder For-кожен для масиву в JavaScript?
Ще один розгляд вищезазначених чудових відповідей - це ланцюжок. За допомогою ForEach () ви не можете зв'язати ланцюжок, але з картою () ви можете.
Наприклад:
var arrayNumbers = [3,1,2,4,5];
arrayNumbers.map(function(i) {
return i * 2
}).sort();
з .forEach (), ви не можете зробити .sort (), ви отримаєте помилку.
Для Рамди різниця між R.map()
і R.forEach()
становить:
R.forEach()
повертає початковий масив, тоді як R.map()
повертає функторR.forEach()
може працювати лише на масиві, але R.map()
також може працювати на об'єкті (тобто пари ключів / значень об'єкта трактуються як масив)
every
таforEach
не є методами jQuery, я вважаю, що навряд чи питання стосується jQuery. developer.mozilla.org/uk/JavaScript/New_in_JavaScript/1.6