[English / 中文]
- 🚀 Run fast (1.5m ops/s for array of length 50 and 500k ops/s for string of length 62)
- 🌕 Support array or string
- 🕺🏻 Stable even distribution
- 📦 Tiny and tree shaking support
- 🌎 Support web, Node and worker with esm, cjs amd umd
npm i z-shuffle
import shuffle from 'z-shuffle';
console.log(shuffle(new Array(10).fill(null).map((v, i) => i)));
// [5, 3, 0, 1, 6, 9, 2, 4, 8, 7]
declare function shuffle(
target: string,
option?: {
fix?: true;
}
): string;
declare function shuffle<T = any>(
target: T[],
option?: {
pure?: boolean;
}
): T[];
For string shuffle, use fix
to fix split for some special unicode char like 📦 🚀
.
But if your string have some more special char like 👩🏾🔧
, you should use some lib to transform the string to an array
before shuffle.
By default, shuffle will clone an array for do shuffle, but if you wan't this, just set pure
to false
.
This is a chart about do shuffle 100000 times for an array from A ~ P (16 letters for better display). The x axis means the index of element in the array, the y axis means how much times the element appear to the index.
All elements's appear count to each index are around 6250 (100000/16), which means they are even distribution.