z-shuffle
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

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

distribution-chart

Package Sidebar

Install

npm i z-shuffle

Weekly Downloads

2

Version

1.0.1

License

MIT

Unpacked Size

17.7 kB

Total Files

11

Last publish

Collaborators

  • zxbing0066