javascript中关于map foreach 和reduce的用法简单叙述

找了一些关于这方面的资料,特别是从微软网站里找了一些,发现里面讲解的很肤浅,只有一些例子,弄得我弄不明白到底是怎么回事,搜来搜去 在
http://www.zhihu.com/question/24927450/answer/29473357 找到了“可能是”源代码的代码,分析了一下,感觉有些谬误。现修正并写下来并编辑编辑

Array.prototype.forEach = function (fn,thisArg) {
var that=this;
if(thisArg){
    that=thisArg;
}
    for (var i = 0,len = that.length; i < len ; i++) {
         fn.apply(that,[that[i],i,that]);
    }
}

回调函数参数:3个参数(数组第i个值,i,数组本身)
返回值:无
例子:
var example=[“one”,”two”,”three”].forEach(function(value,i,me){
return value;
});
结果为undefined,因为这个方法调用没有return,他只是执行

Array.prototype.map = function (fn,thisarg) {
var that=this;
if(thisarg){
    that=thisarg
}
    var resultArray = [];
    for (var i = 0,len = that.length; i < len ; i++) {
         resultArray[i] = fn.apply(that,[that[i],i,that]);
    }
    return resultArray;
}

回调函数参数:3个参数(数组第i个值,i,数组本身)
返回值:处理后的数组,一一对应
例子:

var example=[“one”,”two”,”three”].map(function(value,i,me){
return value+”|”+i+”|”+me;
});

结果为数组:
0: “one|0|one,two,three”
1: “two|1|one,two,three”
2: “three|2|one,two,three”


Array.prototype.reduce= function (fn,initValue) {
    var formerResult ;
    if(initValue){
        formerResult=initValue
    }else{
        formerResult= this[0];
    };
    for (var i = 1,len = this.length; i < len ; i++) {
         formerResult = fn.apply(this,[formerResult,this[i],i,this]);
    }
    return formerResult;
}

回调函数参数:4个参数(前一个值,数组第i个值,i,数组本身)
返回值:处理后的某个值
例子:
var example=[“one”,”two”,”three”].reduce(function(prevous,value,i,me){
return prevous+”|”+value;
});
结果为”one|two|three”

var example=[“one”,”two”,”three”].reduce(function(prevous,value,i,me){
return value;
});
结果为”three”
难理解么,这里结合原型就清楚明白了。我们在这里回调的有四个参数
第一个参数prevous:指的是回调函数上一个处理后的结果
第二个参数指的是当前数组第i个值
第三第四个基本上我们不用。
我们就用第一个和第二个做累加运算。清楚明白没

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值