В чем разница между.карта.,каждый, и...по каждому элементу?
Я всегда задавался вопросом, в чем разница между ними были. Кажется, все они делают одно и то же...
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 (), вы получите сообщение об ошибке.