An open API service indexing awesome lists of open source software.

https://github.com/igorskyflyer/npm-scramble

๐Ÿƒ Scrambles (rearranges randomly) Strings and Arrays. ๐ŸŽ‹
https://github.com/igorskyflyer/npm-scramble

algorithm array back-end fisher-yates-shuffle igorskyflyer javascript js node random scramble shuffle string ts typescript

Last synced: 5 months ago
JSON representation

๐Ÿƒ Scrambles (rearranges randomly) Strings and Arrays. ๐ŸŽ‹

Awesome Lists containing this project

README

          


Icon of ScRaMbLe

ScRaMbLe




๐Ÿƒ Scrambles (rearranges randomly) Strings and Arrays. ๐ŸŽ‹




## ๐Ÿ“ƒ Table of Contents

- [Features](#-features)
- [Usage](#-usage)
- [API](#-api)
- [scrambleString()](#scramblestringinput-string-options-istringoptions-string)
- [scrambleArray()](#scramblearrayarraytypeinput-arraytype-arraytype)
- [Examples](#๏ธ-examples)
- [Changelog](#-changelog)
- [Support](#-support)
- [License](#-license)
- [Related](#-related)
- [Author](#-author)




## ๐Ÿค– Features

- ๐ŸŽฏ Scrambles words while keeping first and last letters intact for readability
- ๐Ÿงฉ Shuffles array elements with a proven Fisher Yates algorithm
- โœ‚๏ธ Optional whitespace trimming before scrambling text
- ๐Ÿ›ก๏ธ Validates inputs and throws clear, descriptive errors
- โšก Zero dependencies for lightweight, fast execution
- ๐Ÿ”„ Pure functions that donโ€™t mutate original data
- ๐Ÿง  Works with any array type thanks to TypeScript generics
- ๐Ÿ“ Well-documented with clear parameter and return descriptions
- ๐Ÿงช Perfect for games, puzzles, mock data, and creative text effects




## ๐Ÿ•ต๐Ÿผ Usage

Install it by executing any of the following, depending on your preferred package manager:

```bash
pnpm add @igorskyflyer/scramble
```

```bash
yarn add @igorskyflyer/scramble
```

```bash
npm i @igorskyflyer/scramble
```




## ๐Ÿคน๐Ÿผ API

### `scrambleString(input: string, options?: IStringOptions): string`

*Scrambles the characters of each word in a given string.*

`input` - The string to be scrambled.


> โ„น๏ธ **NOTE**
>
> Since `Fisher-Yates` algorithm is used for scrambling, a length of > 3 is needed for a word to be able to get scrambled.
>


`options` - Options for scrambling, **optional**.


`options` are defined via an interface `IStringOptions`:

```ts
interface IStringOptions {
trimWhitespace?: boolean
}
```


`trimWhitespace`, if true all whitespace is removed from the input string prior to scrambling its contents.


Returns the scrambled string.

Will throw an error if the input is not a string.

---

### `scrambleArray(input: ArrayType[]): ArrayType[]`

*Scrambles the elements of an array.*

`input` - The array to be scrambled.


Returns the scrambled array.

Will throw an error if the input is not an array.




## ๐Ÿ—’๏ธ Examples

`example.mts`
```ts
import { scrambleString, scrambleArray } from '@igorskyflyer/scramble'

// these are just sample outputs
// since each invocation reorders
// elements randomly

console.log(scrambleString(
'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'
)) // returns 'Leorm isupm dloor sit aetm, ccotnsueetr asdincipig eitl.'

console.log(scrambleString(
'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', { trimWhitespace: true }
)) // returns 'Lpetssgerodcsctcmuaunelrteiisoomirlait,toindmipe.'

console.log(scrambleArray([1, 2, 3, 4, 5, 6, 7, 8])) // [5, 7, 1, 4, 2, 8, 3, 6]

```




## ๐Ÿ“ Changelog

๐Ÿ“‘ The changelog is available here, [CHANGELOG.md](https://github.com/igorskyflyer/npm-scramble/blob/main/CHANGELOG.md).




## ๐Ÿชช License

Licensed under the MIT license which is available here, [MIT license](https://github.com/igorskyflyer/npm-scramble/blob/main/LICENSE).




## ๐Ÿ’– Support


I work hard for every project, including this one and your support means a lot to me!


Consider buying me a coffee. โ˜•




Donate to igorskyflyer




Thank you for supporting my efforts! ๐Ÿ™๐Ÿ˜Š




## ๐Ÿงฌ Related

[@igorskyflyer/uarray](https://www.npmjs.com/package/@igorskyflyer/uarray)

> _๐ŸŽ‰ Provides UArray, an Array type that supports negative indices/indexes, just wrap your regular JavaScript array with UArray() and you are all set! ๐Ÿ™Œ_


[@igorskyflyer/magic-string](https://www.npmjs.com/package/@igorskyflyer/magic-string)

> _๐Ÿงต An expressive and chainable library for advanced string manipulations. Supports appending, prepending, trimming, quoting, and path formatting with customizable whitespace handling. Makes advanced String manipulations a piece of cake. ๐Ÿฆฅ_


[@igorskyflyer/strip-html](https://www.npmjs.com/package/@igorskyflyer/strip-html)

> _๐Ÿฅž Removes HTML code from the given string. Can even extract text-only from the given an HTML string. โœจ_


[@igorskyflyer/extendable-string](https://www.npmjs.com/package/@igorskyflyer/extendable-string)

> _๐Ÿฆ€ ExtendableString allows you to create strings on steroids that have custom transformations applied to them, unlike common, plain strings. ๐Ÿช€_


[@igorskyflyer/duoscribi](https://www.npmjs.com/package/@igorskyflyer/duoscribi)

> _โœ’ DรบรถScrรญbรฎ allows you to convert letters with diacritics to regular letters. ๐Ÿค“_






## ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป Author
Created by **Igor Dimitrijeviฤ‡** ([*@igorskyflyer*](https://github.com/igorskyflyer/)).