.map、.every 和 .forEach 之间有什么区别?
2022-08-30 04:24:27
我一直想知道它们之间的区别是什么。他们似乎都在做同样的事情...
我一直想知道它们之间的区别是什么。他们似乎都在做同样的事情...
区别在于返回值。
.map()
返回通过对原始项执行某些操作而创建的新对象数组。
.every()
返回一个布尔值 - 如果此数组中的每个元素都满足提供的测试函数,则返回布尔值 - true。一个重要的区别是,测试函数可能并不总是为数组中的每个元素调用。一旦测试函数对任何元素返回 false,就不会再迭代数组元素。因此,测试功能通常应该没有副作用。.every()
.forEach()
不返回任何内容 - 它迭代数组,为数组中的每个项执行给定操作。
阅读MDN上的这些和许多其他数组迭代方法。
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?