かわいそうなIEの為に

ちょ,mapも無いなんて...

どうやってコード書いたらいいやねん.

というわけで,自前のmapを作る.ついでもforEachとfilterも.

if (!Array.prototype.map) {//IEか判定
    Array.prototype.map = function (fun) {
	return function (ar, pThis) {
	    for (var i = 0; i < pThis.length; i++) {
		ar.push (fun (pThis[i]));
	    }
	    return ar;
	} (new Array (), this);
    };
    Array.prototype.forEach = function (fun) {
	function (ar, pThis) {
	    for (var i = 0; i < pThis.length; i++) {
		fun (pThis[i]);
	    }
	} (new Array (), this);
    };
    Array.prototype.filter = function (fun) {
	return function (ar, pThis) {
	    for (var i = 0; i < pThis.length; i++) {
		if (fun (pThis[i])) {
		    ar.push (pThis[i]);
		}
	    }
	    return ar;
	} (new Array (), this);
    };
}

この手の関数はFFなどでは組み込み関数として定義されている為,

自分の手でprototypeに追加するより高速である.多分.

// FireFoxでは...
document.writeln (Array.prototype.map);
// Result :
// function map() {
//     [native code]
// }

まぁこれらを必ず読み込むライブラリにでも突っ込んでおくとよろしい.

ああ,これで安心してコードが書ける..