开发者社区> 问答> 正文

javascript forEach方法有什么用(该地图不能做)?

我在map和foreach中看到的唯一区别map是返回一个数组而forEach不是。但是,我什至不了解forEach方法“ func.call(scope, this[i], i, this);” 的最后一行。例如,不为“ this”和“ scope”,指的同一个对象,而不是this[i]和i参照在环路中的电流值?

我在另一篇文章中注意到有人说:“ forEach当您想根据列表的每个元素来做某事时使用。例如,您可能要在页面中添加内容。从本质上讲,当您想要“副作用”时,它非常有用。我不知道副作用是什么意思。

Array.prototype.map = function(fnc) { var a = new Array(this.length); for (var i = 0; i < this.length; i++) { a[i] = fnc(this[i]); } return a; }

Array.prototype.forEach = function(func, scope) { scope = scope || this; for (var i = 0, l = this.length; i < l; i++) { func.call(scope, this[i], i, this); } } 最后,除了像这样操作数字之外,javascript中这些方法还有什么实际用途(因为我们没有更新数据库):

alert([1,2,3,4].map(function(x){ return x + 1})); //this is the only example I ever see of map in javascript. 感谢您的答复。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 13:35:31 540 0
1 条回答
写回答
取消 提交回答
  • map与forEach您的示例之间的本质区别在于,它们forEach对原始数组元素进行操作,而map作为结果显式返回一个新数组。

    有了forEach你正在服用一些行动-和任选的改变-每一个元素原始数组英寸 该forEach方法运行为每个元素提供的功能,但不返回任何内容(undefined)。另一方面,map遍历数组,将函数应用于每个元素,并将结果作为新array发出。

    “副作用” forEach是原始数组被更改。“无副作用”的map意思是,在习惯用法中,原始数组元素不会更改;新数组是原始数组中每个元素的一对一映射-映射转换是您提供的功能。

    没有数据库的事实并不意味着您不必对数据结构进行操作,毕竟,这是任何语言编程的本质之一。至于最后一个问题,数组不仅可以包含数字,还可以包含对象,字符串,函数等。

    2020-02-08 13:35:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载