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

来源:互联网 发布:淘宝美工常用ps字体 编辑:程序博客网 时间:2024/06/05 19:39

找了一些关于这方面的资料,特别是从微软网站里找了一些,发现里面讲解的很肤浅,只有一些例子,弄得我弄不明白到底是怎么回事,搜来搜去 在
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
原创粉丝点击