我正在 Javascript 中进行数组操作,并且我希望能够通过多次调用 map、concat 等来链接操作。
const someAmazingArrayOperation = (list) =>
list
.map(transformStuff)
.sort(myAwesomeSortAlgorithm)
.concat([someSuffixElement])
.precat([newFirstElement])
.filter(unique)
Run Code Online (Sandbox Code Playgroud)
但我遇到的问题是Array.precat不存在。(想想Array.concat,但反过来。)
由于某些原因,我不想修改Array.prototype自己的代码。(https://flaviocopes.com/javascript-why-not-modify-object-prototype/)
我完全可以使用Array.concat我的数组并将其连接到前缀数组的末尾并继续。但这并不与其他东西联系在一起,而且它使我的代码看起来很笨拙。
这是一个小问题,因为我可以轻松编写代码来获得我想要的输出。但这是一件大事,因为我希望我的代码看起来干净,而这似乎是数组原型中缺失的一部分。
有没有办法在不修改内置类型原型的情况下得到我想要的东西?
有关假设的 Array.precat 的更多信息,另请参阅: concat,但前置而不是附加
您可以使用Array#reduce一个函数,该函数采用initialValueas 数组作为前置数据。
const
precat = (a, b) => [...a, b],
result = [1, 2, 3]
.reduce(precat, [9, 8, 7]);
console.log(result)Run Code Online (Sandbox Code Playgroud)