Мне всегда было интересно, в чем разница между ними. Кажется, все они делают одно и то же ...
javascript
foreach
map-function
0x499602D2
источник
источник
every
иforEach
не методы jQuery, я думаю, что вряд ли вопрос каким-либо образом относится к jQuery. developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.6Ответы:
Разница в возвращаемых значениях.
.map()
возвращает новый массив объектов, созданный путем выполнения некоторых действий с исходным элементом..every()
возвращает логическое значение - истина, если каждый элемент в этом массиве удовлетворяет предоставленной функции тестирования. Важное отличие.every()
состоит в том, что функция тестирования не всегда может быть вызвана для каждого элемента в массиве. Как только функция тестирования возвращает false для любого элемента, повторение элементов массива больше не выполняется. Следовательно, функция тестирования обычно не должна иметь побочных эффектов ..forEach()
ничего не возвращает - он выполняет итерацию по массиву, выполняя заданное действие для каждого элемента в массиве.Прочтите об этих и многих других методах итерации массивов на MDN .
источник
Ответ gilly3 отличный. Я просто хотел добавить немного информации о других типах функций "цикла по элементам".
.every()
(прекращает цикл, когда итератор в первый раз возвращает false или что-то ложное).some()
(прекращает цикл, когда итератор в первый раз возвращает истину или что-то правдивое).filter()
(создает новый массив, включающий элементы, в которых функция фильтра возвращает истину, и опускает те, где она возвращает ложь).map()
(создает новый массив из значений, возвращаемых функцией итератора).reduce()
(создает значение путем повторного вызова итератора, передачи предыдущих значений; подробности см. в спецификации; полезно для суммирования содержимого массива и многих других вещей).reduceRight()
(как и сокращение, но работает в порядке убывания, а не возрастания)кредит: TJCrowder Для каждого по массиву в JavaScript?
источник
Еще одно соображение по поводу приведенных выше замечательных ответов - это цепочка. С помощью forEach () вы не можете создать цепочку, но с помощью map () можно.
Например:
с .forEach () вы не можете выполнить .sort (), вы получите сообщение об ошибке.
источник
Для Ramda разница между
R.map()
иR.forEach()
заключается в следующем:R.forEach()
возвращает исходный массив, тогда какR.map()
возвращает функторR.forEach()
может работать только с массивом, ноR.map()
может также работать с объектом (т.е. пары ключ / значение объекта обрабатываются как массив)источник