prototype.js分析 Enumerable

findAll(), fileter(), select 条件にあてはまる要素を全て見つける

<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.findAll = function(iterator){
	var rs = [];
	this.each(function(v, k){
		if(iterator(v, k))
			rs.push(v);
	});
	return rs;
};
		

var $break = {};

var kekka = "foo,bar,hoge,moge".split(',').findAll(function(v, k){
	if(v.length >= 4) return true;
	else console.log(v + "_boo");
});
console.log(kekka);
</script>