.map、.every 和 .forEach 之间有什么区别?

2022-08-30 04:24:27

我一直想知道它们之间的区别是什么。他们似乎都在做同样的事情...


答案 1

区别在于返回值。

.map() 返回通过对原始项执行某些操作而创建的新对象数组

.every() 返回一个布尔值 - 如果此数组中的每个元素都满足提供的测试函数,则返回布尔值 - true。一个重要的区别是,测试函数可能并不总是为数组中的每个元素调用。一旦测试函数对任何元素返回 false,就不会再迭代数组元素。因此,测试功能通常应该没有副作用.every()

.forEach() 不返回任何内容 - 它迭代数组,为数组中的每个项执行给定操作。

阅读MDN上的这些和许多其他数组迭代方法。


答案 2

gilly3的答案很棒。我只是想添加一些关于其他类型的“循环元素”函数的信息。

  • .every() (迭代器第一次返回 false 或 falsey 时停止循环)
  • .some() (在迭代器第一次返回 true 或 truthy 时停止循环)
  • .filter() (创建一个新数组,其中包含 filter 函数返回 true 的元素,并省略返回 false 的元素)
  • .map() (从迭代器函数返回的值创建新数组)
  • .reduce() (通过重复调用迭代器来构建一个值,传入以前的值;有关详细信息,请参阅规范;对于总结数组的内容和许多其他内容很有用)
  • .reduceRight() (像 reduce 一样,但按降序而不是升序工作)

归功于:T.J.Crowder For-each over a array in JavaScript?