25 lines
711 B
JavaScript
25 lines
711 B
JavaScript
|
// Thanks
|
||
|
// @rauchma http://www.2ality.com/2014/01/efficient-string-repeat.html
|
||
|
// @mathiasbynens https://github.com/mathiasbynens/String.prototype.repeat/blob/4a4b567def/repeat.js
|
||
|
|
||
|
"use strict";
|
||
|
|
||
|
var value = require("../../../object/valid-value")
|
||
|
, toInteger = require("../../../number/to-integer");
|
||
|
|
||
|
module.exports = function (count) {
|
||
|
var str = String(value(this)), result;
|
||
|
count = toInteger(count);
|
||
|
if (count < 0) throw new RangeError("Count must be >= 0");
|
||
|
if (!isFinite(count)) throw new RangeError("Count must be < ∞");
|
||
|
|
||
|
result = "";
|
||
|
while (count) {
|
||
|
if (count % 2) result += str;
|
||
|
if (count > 1) str += str;
|
||
|
// eslint-disable-next-line no-bitwise
|
||
|
count >>= 1;
|
||
|
}
|
||
|
return result;
|
||
|
};
|