Skip to content

sanchitgera/ScrambleJS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ScrambleJS

Efficient shuffling of arrays and strings in JavaScript

Getting it

ScrambleJS is available as Node module

$ npm install scramble --save

As well as a bower component

$ bower install scramble --save 

Or it can be directly set up from this repo

$ git clone git@github.com:sanchitgera/ScrambleJS
$ cd ScrambleJS/
$ npm install 
$ npm run uglify

Usage

On the server

var scramble = require('scramble');

var input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var output = scramble(input); 

In the browser

<script src="./path/to/my/scripts/scrambled.min.js"></script>
<script>
  scramble('This is a long string with way too many spaces');
</script>

Options

Preserve

You can additionally preserve a portion of the array and have it fixed through the scrambling process. For example,

var input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

for( var i = 0; i < 3; i++) {
  scramble(input, {
    preserve: [2, 5]
  });
}
//Output 1 
[ 8, 10, 3, 4, 5, 6, 7, 1, 9, 2 ]
//Output 2
[ 2, 10, 3, 4, 5, 6, 8, 1, 7, 9 ]
//Output 3
[ 1, 8, 3, 4, 5, 6, 7, 2, 9, 10 ]

This preserves the elements between the indices 2 and 5 (inclusive) in every iteration.

Attach

Scramble can be invoked as a native function on arrays and strings by calling attach first.

// Attaches scramble as a native function
scramble.attach(); 

var inputArray = ['foo', 'bar', 'baz'];
inputArray.scramble();

var inputString = 'Hello World!';
inputString.scramble();

Modifying built in objects isn't, however, best practice necessarily. Be careful :)

Testing

All tests are contained in lib/scrambleSpec. To run them,

$ npm install 
$ npm test

License

Copyright (c) 2015, Sanchit Gera. (MIT License)

See LICENSE for more info.

About

Efficient shuffling of arrays and strings in JavaScript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published