shuffle-array
Version:
Randomize the order of the elements in a given array.
82 lines (58 loc) • 2.81 kB
Markdown
# shuffle-array
[![NPM version][npm-image]][npm-link] [![License][lic-image]][npm-link] [![Build status][travis-image]][travis-link] [![Coverage Status][coverage-image]][coverage-link] [![devDependency status][devdeps-image]][devdeps-link] [![downloads][dt-image]][npm-link]
> Randomize the order of the elements in a given array using the [Fisher-Yates algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle).
## Installation
$ npm install shuffle-array
$ bower install shuffle-array
$ component install pazguille/shuffle-array
## Usage
```js
var shuffle = require('shuffle-array'),
collection = [1,2,3,4,5];
shuffle(collection);
console.log(collection); // returns [4, 3, 1, 5, 2]
```
## API
### shuffle(arr, [options])
Randomizes the order of the elements in a given `array`.
- `arr` - The given array.
- [`options`] {Object} - Optional configuration options.
- [`options.copy`] {Boolean} - Sets if should return a shuffled copy of the given array. By default it's a falsy value.
- [`options.rng`] {Function} - Specifies a custom random number generator.
```js
shuffle([1,2,3,4,5]); // returns [4, 3, 1, 5, 2]
// Return a copy of the given array
shuffle([1,2,3,4,5], { 'copy': true }); // returns [4, 3, 1, 5, 2] (copied)
```
### shuffle.pick(arr, [options])
Pick one or more `random` elements from the given `array`.
- `arr` - The given array.
- [`options`] {Object} - Optional configuration options.
- [`options.picks`] {Number} - Specifies how many random elements you want to pick. By default it picks 1.
- [`options.rng`] {Function} - Specifies a custom random number generator.
```js
shuffle.pick([1,2,3,4,5]); // returns 5
// Return a random collection with 2 elements
shuffle.pick([1,2,3,4,5], { 'picks': 2 })); // returns [4, 3]
```
## Build
npm run dist
## Test
npm test
## With :heart: by
- Guille Paz (Front-end developer | Web standards lover)
- E-mail: [guille87paz@gmail.com](mailto:guille87paz@gmail.com)
- Twitter: [@pazguille](http://twitter.com/pazguille)
- Web: [http://pazguille.me](http://pazguille.me)
## License
MIT license. Copyright © 2014.
[npm-image]: https://img.shields.io/npm/v/shuffle-array.svg
[lic-image]: https://img.shields.io/npm/l/shuffle-array.svg
[npm-link]: https://npmjs.org/package/shuffle-array
[travis-image]: https://img.shields.io/travis/pazguille/shuffle-array.svg
[travis-link]: https://travis-ci.org/pazguille/shuffle-array
[devdeps-image]: https://img.shields.io/david/dev/pazguille/shuffle-array.svg
[devdeps-link]: https://david-dm.org/pazguille/shuffle-array#info=devDependencies
[dt-image]: https://img.shields.io/npm/dt/shuffle-array.svg
[coverage-image]: https://img.shields.io/coveralls/pazguille/shuffle-array.svg
[coverage-link]: https://coveralls.io/github/pazguille/shuffle-array