Вы когда-нибудь задумывались о неизменной версии методов прототипа массива?

например) Array.prototype.push возвращает новый массив.

immutable-array-prototype представляет это.



Почему?

ECMAScript Array имеет несколько изменяемых методов.
Эта библиотека предоставляет неизменяемую версию каждого метода.

@immutable-array/prototype включает неизменяемую версию этих методов.

npm install @immutable-array/prototype

Или, если вам нужен один метод, вы можете использовать метод как пакет.

npm install @immutable-array/pop
npm install @immutable-array/push
npm install @immutable-array/shift
npm install @immutable-array/unshift
npm install @immutable-array/sort
npm install @immutable-array/reverse
npm install @immutable-array/fill
npm install @immutable-array/splice
npm install @immutable-array/copy-within

Пример

Использование простое. Эта библиотека предоставляет тот же API и поведение без первого аргумента.

import {
    sort,
    unshift,
    push,
    fill,
    splice,
    pop,
    reverse,
    copyWithin,
    shift
} from "@immutable-array/prototype";
describe("prototype", () => {
    it("shift", () => {
        assert.deepStrictEqual(shift(["a", "b", "c", "d", "e"]), ["b", "c", "d", "e"]);
    });
    it("unshift", () => {
        assert.deepStrictEqual(unshift(["a", "b", "c", "d", "e"], "x"), [
            "x",
            "a",
            "b",
            "c",
            "d",
            "e"
        ]);
    });
    it("pop", () => {
        assert.deepStrictEqual(pop(["a", "b", "c", "d", "e"]), ["a", "b", "c", "d"]);
    });
    it("push", () => {
        assert.deepStrictEqual(push(["a", "b", "c", "d", "e"], "x"), [
            "a",
            "b",
            "c",
            "d",
            "e",
            "x"
        ]);
    });
    it("splice", () => {
        assert.deepStrictEqual(splice(["a", "b", "c", "d", "e"], 0, 1, "x"), [
            "x",
            "b",
            "c",
            "d",
            "e"
        ]);
    });
    it("sort", () => {
        assert.deepStrictEqual(sort(["e", "a", "c", "b", "d"]), ["a", "b", "c", "d", "e"]);
    });
    it("reverse", () => {
        assert.deepStrictEqual(reverse(["a", "b", "c", "d", "e"]), ["e", "d", "c", "b", "a"]);
    });
    it("fill", () => {
        assert.deepStrictEqual(fill(new Array(5), "x"), ["x", "x", "x", "x", "x"]);
    });
    it("copyWithin", () => {
        assert.deepStrictEqual(copyWithin(["a", "b", "c", "d", "e"], 0, 3, 4), ["d", "b", "c", "d", "e"]);
    });
});

Запросы на вытягивание и звезды всегда приветствуются.

https://github.com/azu/immutable-array-prototype