forEachやmapとかを自分で実装したものです

なんでnativeで入ってるのに作ったかというと
前記事の実行時にIE9だけなぜか動かない…
エラー見てみるとmapがない!
map以外もforEachやsomeやfilterなど配列の全要素を見ていく系のメソッドがIE9にはありませんでした

これだからIEは…
と思いつつも簡単にできそうだし、いつか役に立つかも?ということでmapとかを作りました
ググればすぐに出てきそうでしたが、試してたのがネット使えなかった時の時間潰し中でもあったので自作です

Array.prototype.forEach = Array.prototype.forEach || function(func){
for(var i=0,l=this.length;i<l;i++){
func(this[i],i,this);
}
} Array.prototype.foreach = Array.prototype.foreach || function(func){
for(var i=0,l=this.length;i<l;i++){
var t = func(this[i],i,this);
if(t!=null) return t;
}
return false;
} Array.prototype.some = Array.prototype.some || function(func){
for(var i=0,l=this.length;i<l;i++){
if(func(this[i],i,this)) return true;
}
return false;
} Array.prototype.every = Array.prototype.every || function(func){
for(var i=0,l=this.length;i<l;i++){
if(!func(this[i],i,this)) return false;
}
return true;
} Array.prototype.map = Array.prototype.map || function(func){
var result = [];
for(var i=0,l=this.length;i<l;i++){
result[i] = func(this[i],i,this);
}
return result;
} Array.prototype.reduce = Array.prototype.reduce || function(func){
var result = this[0];
for(var i=1,l=this.length;i<l;i++){
result = func(result,this[i],i,this);
}
return result;
} Array.prototype.filter = Array.prototype.filter || function(func){
var result = [];
for(var i=0,l=this.length;i<l;i++){
if(func(this[i],i,this)) result.push(this[i]);
}
return result;
}
 
foreach(eは小文字)は、自分が欲しいなと思ってたもので、someやeveryのboolean型じゃなくて任意の型で好きな値が返せます
配列の中で特定条件を満たす一番最初に出てくるの要素の値が欲しい時に便利です
PHPと違いレキシカルスコープなので、someやeveryで終了直前に上のスコープの変数に入れてもいいんですがなんか綺麗じゃない気がします
また、filterで特定要素のだけ持ってきてshiftで最初の要素を取り出すのは、無駄なコストがあってイヤです
そんなとき使えるメソッドです

どれも内容は似たようなことで、返す値や途中で止めるかどうかくらいの違いです
速度の方は、やってることはjQueryとかと似たようなものなので特に問題無いと思います

jQueryだとこれくらいらしいです
http://dsuket.hatenablog.com/entry/2013/06/04/143521