在 Javascript 中,是否有一种简单的方法可以像 Array.concat 的相反操作一样获得可链接的数组前置操作?

Mne*_*quo 0 javascript arrays

我正在 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,但前置而不是附加

Nin*_*olz 6

您可以使用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)