Spaces:
Runtime error
Runtime error
/** Used as references for various `Number` constants. */ | |
var MAX_SAFE_INTEGER = 9007199254740991; | |
/* Built-in method references for those with the same name as other `lodash` methods. */ | |
var nativeFloor = Math.floor; | |
/** | |
* The base implementation of `_.repeat` which doesn't coerce arguments. | |
* | |
* @private | |
* @param {string} string The string to repeat. | |
* @param {number} n The number of times to repeat the string. | |
* @returns {string} Returns the repeated string. | |
*/ | |
function baseRepeat(string, n) { | |
var result = ''; | |
if (!string || n < 1 || n > MAX_SAFE_INTEGER) { | |
return result; | |
} | |
// Leverage the exponentiation by squaring algorithm for a faster repeat. | |
// See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. | |
do { | |
if (n % 2) { | |
result += string; | |
} | |
n = nativeFloor(n / 2); | |
if (n) { | |
string += string; | |
} | |
} while (n); | |
return result; | |
} | |
module.exports = baseRepeat; | |