Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/wildpeaks/package-frozen

Utilities to manipulate frozen arrays
https://github.com/wildpeaks/package-frozen

npm-package typescript

Last synced: 23 days ago
JSON representation

Utilities to manipulate frozen arrays

Awesome Lists containing this project

README

        

# Frozen arrays utilities

![Github Release](https://img.shields.io/github/v/release/wildpeaks/package-frozen.svg?label=Release&logo=github&logoColor=eceff4&colorA=4c566a&colorB=11abfb)

Typescript functions to **manipulate [frozen](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze) arrays**.

All functions leave the original Array untouched, and return a new frozen Array with the modification.

Install:

npm install @wildpeaks/frozen

---

## Function: arrayPush

**Appends a single element** at the end of an Array.

Usage:

````ts
function arrayPush(frozenArray: ReadonlyArray, newValue: T): ReadonlyArray
````

Example:

````ts
import {arrayPush} from '@wildpeaks/frozen';

type MyArray = ReadonlyArray;
const srcArray: MyArray = Object.freeze(['zero', 111, 'TWO']);
const newArray: MyArray = arrayPush(srcArray, 333);

// Result:
// srcArray ['zero', 111, 'TWO']
// newArray ['zero', 111, 'TWO', 333]
````

---

## arrayRemove

**Removes a single element**, by index.

Usage:

````ts
function arrayRemove(frozenArray: ReadonlyArray, index: number): ReadonlyArray
````

Example:

````ts
import {arrayRemove} from '@wildpeaks/frozen';

type MyArray = ReadonlyArray;
const srcArray: MyArray = Object.freeze(['zero', 111, 'TWO']);
const newArray: MyArray = arrayRemove(srcArray, 0);

// Result:
// srcArray ['zero', 111, 'TWO']
// newArray [111, 'TWO']
````

---

## arrayUniquePush

**Appends a single element** at the end of an Array like `arrayPush`, but only **if the array doesn't already contain the value**.
The Array is expected to contain only unique values.

Usage:

````ts
function arrayUniquePush(frozenArray: ReadonlyArray, newValue: T): ReadonlyArray
````

Example (the Array doesn't contain the value):

````ts
import {arrayUniquePush} from '@wildpeaks/frozen';

type MyArray = ReadonlyArray;
const srcArray: MyArray = Object.freeze(['zero', 111, 'TWO']);
const newArray: MyArray = arrayUniquePush(srcArray, 333);

// Result:
// srcArray ['zero', 111, 'TWO']
// newArray ['zero', 111, 'TWO', 333]
````

Example (the Array already contains the value):

````ts
import {arrayUniquePush} from '@wildpeaks/frozen';

type MyArray = ReadonlyArray;
const srcArray: MyArray = Object.freeze(['zero', 111, 'TWO']);
const newArray: MyArray = arrayUniquePush(srcArray, 111);

// Result:
// srcArray ['zero', 111, 'TWO']
// newArray ['zero', 111, 'TWO']
````

---

## arrayUniqueRemove

**Removes a single element** from an Array, by value (whereas `arrayRemove` removes by index).
The Array is expected to contain only unique values.

Usage:

````ts
function arrayUniqueRemove(frozenArray: ReadonlyArray, value: T): ReadonlyArray
````

Example:

````ts
import {arrayUniqueRemove} from '@wildpeaks/frozen';

type MyArray = ReadonlyArray;
const srcArray: MyArray = Object.freeze(['zero', 111, 'TWO']);
const newArray: MyArray = arrayUniqueRemove(srcArray, 111);

// Result:
// srcArray ['zero', 111, 'TWO']
// newArray ['zero', 'TWO']
````

---