- eachSliceメソッド内の「this.toArray()」はthis.collect()になる。引数にイテレータが無い場合はPrototype.Kが代入される。引数をそのまま返す関数です
<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;
this._each(function(value){
iterator(value, index++);
});
}
Array.prototype.collect = function(iterator){
iterator = iterator || function(x){return x};
var rs = [];
this.each(function(v, k){
rs.push(iterator(v, k));
});
return rs;
}
Array.prototype.eachSlice = function(number, iterator){
var index = -number;
var slices = [];
var array = this.collect();
while((index += number) < array.length){
slices.push(array.slice(index, index + number));
}
return slices.collect(iterator);
}
var array = ['hoge', 'bar', 'moge', 'uho'];
var rs = array.eachSlice(3, function(v, k){
return v;
});
console.log(rs);
</script>