Skip to content

Instantly share code, notes, and snippets.

@zealinux
Forked from FGRibreau/times.js
Created April 24, 2017 09:11
Show Gist options
  • Save zealinux/6f705412f21c82840a2afa57ff5c6189 to your computer and use it in GitHub Desktop.
Save zealinux/6f705412f21c82840a2afa57ff5c6189 to your computer and use it in GitHub Desktop.
Ruby .times & .upto & .downto methods in JavaScript
// Ruby = 5.times { |i| puts i }
// JS = (1).times(function(i){console.log(i);})
Number.prototype.times = function(cb) {
var i = -1;
while (++i < this) {
cb(i);
}
return +this;
}
// Ruby = 1.upto(5) { |i| puts i }
// JS = (1).upto(5, function(i){console.log(i);})
Number.prototype.upto = function(t, cb) {
var i = this;
if(t < this) return +this;
while (i <= t) {
cb(i++);
}
return +this;
};
// Ruby = 15.downto(10) { |i| puts i }
// JS = (15).downto(10, function(i){console.log(i);})
Number.prototype.downto = function(t, cb) {
var i = this;
if(t > this) return +this;
while (i >= t) {
cb(i--);
}
return +this;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment