我在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
map与forEach您的示例之间的本质区别在于,它们forEach对原始数组元素进行操作,而map作为结果显式返回一个新数组。
有了forEach你正在服用一些行动-和任选的改变-每一个元素原始数组英寸 该forEach方法运行为每个元素提供的功能,但不返回任何内容(undefined)。另一方面,map遍历数组,将函数应用于每个元素,并将结果作为新array发出。
“副作用” forEach是原始数组被更改。“无副作用”的map意思是,在习惯用法中,原始数组元素不会更改;新数组是原始数组中每个元素的一对一映射-映射转换是您提供的功能。
没有数据库的事实并不意味着您不必对数据结构进行操作,毕竟,这是任何语言编程的本质之一。至于最后一个问题,数组不仅可以包含数字,还可以包含对象,字符串,函数等。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。