prototype.js分析 Enumerable

grep() 条件にマッチする要素を取り出して処理する

<script>
Array.prototype._each = function(iterator){
	for(var i=0, l=this.length; i<l; i++){
		iterator(this[i]);
	}
};

Array.prototype.each = function(iterator){
	var index = 0;
	try{
		this._each(function(v){
			iterator(v, index++);
		});
	} catch(e){
		if(e != $break) throw e;
	}
};

Array.prototype.grep = function(filter, iterator){
	var iterator = iterator || function(x){return x};
	var rs = [];
	this.each(function(v, k){
		if(filter.match(v))
			rs.push(iterator(v, k));
	});
	return rs;
};

var $break = {};
RegExp.prototype.match = RegExp.prototype.test;


var kekka = "10,15,20,25,30,35".split(',').grep(/0$/, function(v, k){
	return v + "_dayo!";
});
console.log(kekka);
</script>