diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/helpers.js | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/helpers.js b/lib/helpers.js index f2b12da6..4100c766 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -194,17 +194,24 @@ var Helpers = function (faker) { }; /** - * takes an array and returns it randomized + * takes an array and randomizes it in place then returns it + * + * uses the modern version of the Fisher–Yates algorithm * * @method faker.helpers.shuffle * @param {array} o */ self.shuffle = function (o) { if (typeof o === 'undefined' || o.length === 0) { - return []; + return o || []; } o = o || ["a", "b", "c"]; - for (var j, x, i = o.length-1; i; j = faker.random.number(i), x = o[--i], o[i] = o[j], o[j] = x); + for (var x, j, i = o.length - 1; i > 0; --i) { + j = faker.random.number(i); + x = o[i]; + o[i] = o[j]; + o[j] = x; + } return o; }; |
