В чем разница между.карта.,каждый, и...по каждому элементу?


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

3 91

3 ответа:

разница заключается в возвращаемых значениях.

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

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

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

Edit: здесь MSDN Docs если вы предпочитаете.

ответ gilly3 велик. Я просто хотел добавить немного информации о других типах функций "loop through elements".

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

кредит: Ти Джей Краудер для каждого над массивом в JavaScript?

еще одно соображение к вышеупомянутым великим ответам-цепочка. С forEach () вы не можете цепочку, но с map (), вы можете.

например:

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

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

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