您是否曾经考虑过Array原型方法的不可变版本?
例如)Array.prototype.push返回一个新的Array。
不可变数组原型代表了这一点。
azu /不可变数组原型
immutable-array-prototype –不可变数组原型方法的集合(每个方法包)。
github.com
为什么?
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和行为,而无需第一个参数。
导入{ 分类, 保持不变 推, 填, 拼接, 流行 相反, copyWithin, 转移 }来自“ @ 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”, “一种”, “ 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”),[ “一种”, “ 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