We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
最近看到关于数组遍历的东西,顺便总结一下 forEach() 和 map() 遍历数组方法的区别。这两个方法都是 ES5 中新增的,当然说到新增方法,不能不提它们的兼容性:IE 9+,哈哈……又是 IE。
forEach()
map()
ES5
IE 9+
IE
(item,index,Array)
this
windown
var ary = [12,23,24,42,1]; var res = ary.forEach(function (item,index,input) { input[index] = item*10; }) console.log(res);//--> undefined; console.log(ary);//--> 通过数组索引改变了原数组;
[].map(); 基本用法跟forEach方法类似:
var ary = [1,2,3,4,5]; var res = ary.map(function (item,index,input) { return item*10; }) console.log(res);//-->[10,20,30,40,50]; 原数组拷贝了一份,并进行了修改 console.log(ary);//-->[1,2,3,4,5]; 原数组并未发生变化
结下来安利一下浏览器兼容的问题:
/** * forEach遍历数组 * @param callback [function] 回调函数; * @param context [object] 上下文; */ Array.prototype.myForEach = function myForEach(callback,context){ context = context || window; if('forEach' in Array.prototye) { this.forEach(callback,context); return; } //IE6-8下自己编写回调函数执行的逻辑 for(var i = 0,len = this.length; i < len;i++) { callback && callback.call(context,this[i],i,this); } }
/** * map遍历数组 * @param callback [function] 回调函数; * @param context [object] 上下文; */ Array.prototype.myMap = function myMap(callback,context){ context = context || window; if('map' in Array.prototye) { return this.map(callback,context); } //IE6-8下自己编写回调函数执行的逻辑 var newAry = []; for(var i = 0,len = this.length; i < len;i++) { if(typeof callback === 'function') { var val = callback.call(context,this[i],i,this); newAry[newAry.length] = val; } } return newAry; }
$.each()
有返回值,可以return 出来。$.map()里面的匿名函数支持2个参数和$.each()里的参数位置相反:数组中的当前项v,当前项的索引 i。如果遍历的是对象,k 是键,v 是值。
$.map()
原文地址
The text was updated successfully, but these errors were encountered:
借用网上一张图片来拓展一下:
来源:水乙
Sorry, something went wrong.
No branches or pull requests
最近看到关于数组遍历的东西,顺便总结一下
forEach()
和map()
遍历数组方法的区别。这两个方法都是ES5
中新增的,当然说到新增方法,不能不提它们的兼容性:IE 9+
,哈哈……又是IE
。原生JS forEach()和map()遍历
共同点:
forEach()
和map()
都支持3个参数,即(item,index,Array)
,第一个是遍历的当前项,第二个是当前项的下标,第三个是原数组this
都是指windown
forEach()
map()
[].map(); 基本用法跟forEach方法类似:
兼容
结下来安利一下浏览器兼容的问题:
jQuery$.each()和$ .map()遍历
共同点:
$.each()
$.each()
里面的匿名函数支持2个参数:当前项的索引i,数组中的当前项v。如果遍历的是对象,k 是键,v 是值。$.map()
有返回值,可以return 出来。
$.map()
里面的匿名函数支持2个参数和$.each()
里的参数位置相反:数组中的当前项v,当前项的索引 i。如果遍历的是对象,k 是键,v 是值。原文地址
The text was updated successfully, but these errors were encountered: