|
|
||
|---|---|---|
| .. | ||
| docs | ||
| lib | ||
| package.json | ||
| README.md | ||
Shuffle
Shuffle elements of an array-like object.
Usage
var shuffle = require( '@stdlib/random/shuffle' );
shuffle( arr[, options] )
Shuffles elements of an array-like object.
var arr = [ 1, 2, 3 ];
var out = shuffle( arr );
// e.g., returns [ 3, 1, 2 ]
The function accepts the following options:
- copy:
stringindicating whether to return a copy (deep,shallowornone). Default:shallow.
By default, the function returns a shallow copy. To mutate the input array (e.g., when input values can be discarded or when optimizing memory usage), set copy to none.
var arr = [ 1, 2, 3 ];
var out = shuffle( arr, {
'copy': 'none'
});
var bool = ( arr === out );
// returns true
To return a deep copy, set the copy option to deep.
var obj = {
'beep': 'boop'
};
var arr = [ [ obj ], [ obj ], [ obj ] ];
// Deep copy:
var out = shuffle( arr, {
'copy': 'deep'
});
var bool = ( arr === out );
// returns false
bool = ( arr[2] === out[2] );
// returns false
// Shallow copy:
out = shuffle( arr, {
'copy': 'shallow'
});
bool = ( arr === out );
// returns false
bool = ( arr[2] === out[2] );
// returns true
shuffle.factory( [options] )
Returns a function to shuffle elements of array-like objects.
var myshuffle = shuffle.factory();
The function accepts the following options:
- copy:
stringspecifying the default copy option (deep,shallowornone). Default:shallow. - seed: pseudorandom number generator seed.
To seed the underlying pseudorandom number generator, set the seed option.
var myshuffle = shuffle.factory({
'seed': 239
});
var out = myshuffle( [ 0, 1, 2, 3, 4 ] );
// e.g., returns [ 3, 4, 1, 0, 2 ]
By default, the returned functions create shallow copies when shuffling. To override the default copy strategy, set the copy option.
var myshuffle = shuffle.factory({
'copy': 'none',
'seed': 867
});
// Created shuffle function mutates input array by default:
var arr = [ 1, 2, 3, 4, 5, 6 ];
var out = myshuffle( arr );
var bool = ( arr === out );
// returns true
// Default option can be overridden:
arr = [ 1, 2, 3, 4 ];
out = myshuffle( arr, {
'copy': 'shallow'
});
bool = ( arr === out );
// returns false
Examples
var shuffle = require( '@stdlib/random/shuffle' );
var result;
var data;
var i;
data = new Array( 20 );
for ( i = 0; i < data.length; i++ ) {
data[ i ] = i;
}
for ( i = 0; i < 10; i++ ) {
result = shuffle( data );
console.log( result );
}