扩展es5数组新增api
数组新增了几个经典的遍历筛选等方法,非常方便。可以避免过渡使用for循环。通过javascript对象的原型扩展能提供一个统一的前端调用接口。
代码如下:
(function(_window){ //数组新增某些方法 //forEach方法从头到尾遍历数组,为每个数组元素调用指定函数并提供当前元素,当前索引与数组当做参数传给函数 Array.prototype.forEach||(Array.prototype.forEach=function(fun){ for(var i=0;i<this.length;i++){ fun(this[i],i,this); } }) //map方法遍历数组并调用指定函数,最后返回一个数组,数组由所有函数返回值组成 Array.prototype.map||(Array.prototype.map=function(fun){ var returnArray=[]; for(var i=0;i<this.length;i++){ returnArray.push(fun(this[i],i,this)); } return returnArray; }) //filter相当一个数组的帅选器,遍历数组并调用指定函数,并返回一个新数组,如果函数返回true则添加返回的数组。 Array.prototype.filter||(Array.prototype.filter=function(fun){ var returnArray=[]; for(var i=0;i<this.length;i++){ if(fun(this[i],i,this)){ returnArray.push(this[i]); } } return returnArray; }) //every 遍历数组调用指定函数,当所有函数都返回true 则every返回true否则返回false。 Array.prototype.every||(Array.prototype.every=function(fun){ if(this.length==0) return true; //every应该尽早结束循环 for(var i=0;i<this.length;i++){ if(!fun(this[i],i,this)){ return false; } } return true; }) //some 遍历数组调用指定函数,当有一个函数返回true就返回true,当所有函数都返回false就返回false Array.prototype.some||(Array.prototype.some=function(fun){ if(this.length==0) return false; //some应该尽早结束循环 for(var i=0;i<this.length;i++){ if(fun(this[i],i,this)){ return true; } } return false; }) //reduce 遍历数组调用指定函数(函数需要2个参数),每次把调用函数的返回值与下一个元素当做函数参数继续调用。 //对数组进行求和等操作很实用 Array.prototype.reduce||(Array.prototype.reduce=function(fun,initval){ if(this.length==0) return ""; if(this.length==1){ return initval?fun(initval,this[0]):this[0]; } var val=initval, firstindex=initval?0:2; if(!initval){ val=fun(this[0],this[1]); } for(var i=firstindex;i<this.length;i++){ val=fun(val,this[i]); } return val; }) //reduceRight 与reduce一样 只是从右到左遍历数组 Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun,initval){ if(this.length==0) return ""; if(this.length==1){ return initval?fun(initval,this[0]):this[0]; } var val=initval, firstindex=initval?this.length-1:this.length-3; if(!initval){ val=fun(this[this.length-1],this[this.length-2]); } for(var i=firstindex;i>=0;i--){ val=fun(val,this[i]); } return val; }) })(window);
html5.js 通过扩展js的prototype 让不支持html5的浏览器支持html5函数 (持续新增),布布扣,bubuko.com