@zlib/shuffle

A tiny shuffle for array/string of javascript

Usage no npm install needed!

<script type="module">
  import zlibShuffle from 'https://cdn.skypack.dev/@zlib/shuffle';
</script>

README

A tiny πŸ“¦ , fast πŸš€ shuffle of javascript implement for array or string.

ts license mini zipped size dependents coverage tree-shaking support npm version


[English / δΈ­ζ–‡]

✨ Features

  • πŸš€ 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 service worker with esm, cjs amd umd

🎬 Quick Start

Install

npm i @zlib/shuffle

Usage

import shuffle from '@zlib/shuffle';

console.log(shuffle(new Array(10).fill(null).map((v, i) => i)));
// [5, 3, 0, 1, 6, 9, 2, 4, 8, 7]

😼 Playground

Edit @zlib/shuffle playground

🎨 Options

Interface

declare function shuffle(
    target: string,
    option?: {
        fix?: true;
    }
): string;
declare function shuffle<T = any>(
    target: T[],
    option?: {
        pure?: boolean;
    }
): T[];

Option

fix for string shuffle

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.

pure for array shuffle

By default, shuffle will clone an array for do shuffle, but if you wan't this, just set pure to false.

πŸ“Š Distribution

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.

Edit @zlib/shuffle - distribution chart

distribution-chart