Вопрос

Я всегда задавался вопросом, в чем была разница между ними. Кажется, они все делают то же самое ...

Это было полезно?

Решение

Разница в возвратных значениях.

.map() возвращает новый массив объектов Создано путем принятия некоторых действий по оригинальному элементу.

.every() Возвращает логическое - Верно, если каждый элемент в этом массиве удовлетворяет предоставленной функции тестирования. Важное отличие с .every() заключается в том, что функцию теста не всегда может быть вызвана для каждого элемента в массиве. Как только функция тестирования возвращает False для любого элемента, больше нет элементов массива. Следовательно, функция тестирования обычно не должна иметь побочные эффекты.

.forEach() ничего не возвращает - Он итерает массив, выполняющий заданное действие для каждого элемента в массиве.

Читайте об этих и многих других Методы итерации массива в MDN.

Другие советы

Ответ Gilly3 отличный. Я просто хотел добавить немного информации о других типах функций «цикла через элементы».

  • .every() (Останавливает зацикливание в первый раз, когда итератор возвращает False или что -то ложное)
  • .some() (Остановите зацикление, когда итератор вернется правда или что -то правда)
  • .filter() (Создает новый массив, включая элементы, в которых функция фильтра возвращает True и пропускает те, где он возвращает ложь)
  • .map() (Создает новый массив из значений, возвращаемых функцией итератора)
  • .reduce() (Создает значение путем повторного вызова итератора, передавая предыдущие значения; см. Спецификацию для деталей; полезно для суммирования содержимого массива и многих других вещей)
  • .reduceRight() (как уменьшить, но работает в нисходящем, а не восходящем порядке)

Кредит: TJcrowder На что-то за массивом в JavaScript?

Еще одно рассмотрение вышеупомянутых великих ответов - цепочка. С Foreach () вы не можете цепорить, но с Map (), вы можете.

Например:

var arrayNumbers = [3,1,2,4,5];

arrayNumbers.map(function(i) {
    return i * 2
}).sort();

С .foreach () вы не можете сделать .sort (), вы получите ошибку.

За Рамда, разница между R.map() а также R.forEach() является:

  1. R.forEach() возвращает оригинальный массив, тогда как R.map() Возвращает функтор
  2. R.forEach() может работать только на массиве, но R.map() Может также работать на объекте (т.е. пары ключей/значения объекта обрабатываются как массив)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top