Shuffles the arrays of the given (object) map using shuffle-array.
npm install shuffle-obj-arrays
const shuffleObjArrays = require( 'shuffle-obj-arrays' );
console.log(
shuffleObjArrays( {
"foo": [ "x", "y" ],
"bar": [ "a", "b", "c", "d" ],
"baz": [ "f", "g" ]
} )
);
It will print something like:
{
"foo": [ "y", "x" ],
"bar": [ "c", "b", "a", "d" ],
"baz": [ "g", "f" ]
}
Version 1 accepts the same options as shuffle, plus copyNonArrays
.
Syntax:
shuffleObjArrays(
obj: object,
options: { copy: false, copyNonArrays: false },
rng: (n: number): number = Math.random
): object
Randomizes the order of the elements in all arrays of the given object.
obj
{object} - The given object.options
{object} - Options, which may have:copy
{boolean} -true
to copy the given object. Defaults tofalse
.copyNonArrays
{boolean} -true
to copy non-array properties of the given object. Only works whencopy
istrue
. Defaults tofalse
.rng
{function} - Custom random number generator. Defaults toMath.random
.
const shuffleObjArrays = require( 'shuffle-obj-arrays' );
// Using a external pseudo-random number generator
// https://github.com/davidbau/seedrandom
const seedrandom = require( 'seedrandom' );
const options = {
copy: true,
rng: seedrandom( 'my seed' )
};
console.log(
shuffleObjArrays(
{
"foo": [ "x", "y" ],
"bar": [ "a", "b", "c", "d" ],
"baz": [ "f", "g" ],
"zoo": "non array property"
},
options
)
);
It returns something like:
{
"foo": [ "y", "x" ],
"bar": [ "c", "b", "a", "d" ],
"baz": [ "g", "f" ]
}
- shuffle-array - Shuffles an array using Fisher-Yates algorithm and allows to pass a custom pseudo-random number generator (PRNG)
- seedrandom - Predictive PRNG
- one-wise - One-wise combinatorial testing for the arrays of the given object.