forEach和map遍历

一、原生JS forEach()和map()遍历

共同点:

1.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input。

2.匿名函数中的this都是指Window。

3.只能遍历数组。

1).forEach()没有返回值。map()有返回值可接收return 出来的新数组
2)问题:不管是forEach还是map在IE6-8下都不兼容

/**

  • 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;
    }

二、jQuery .each()和.map()遍历
1).each()里面的匿名函数支持2个参数:当前项的索引i,数组中的当前项n。如果遍历的是对象,k 是键,n 是值。 2).map()有返回值,可以return 出来。.map()里面的匿名函数支持2个参数和.each()里的参数位置相反:数组中的当前项n,当前项的索引i。如果遍历的是对象,i 是值,n 是键。如果是(.each() $("span").each()一样

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容