Skip to content

Latest commit

 

History

History

shuffle

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 worker with esm, cjs amd umd

🎬 Quick Start

Install

npm i z-shuffle

Usage

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]

😼 Playground

Edit playground: z-shuffle

🎨 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 z-shuffle - distribution chart

distribution-chart