array .prototype.reverse将数组的内容反向(带有突变)…

是否有类似的简单策略来反转数组而不改变原始数组的内容(不发生突变)?


当前回答

ES6的另一个变体:

我们也可以使用. reduceright()来创建一个反向数组,而不是真正地将它反向。

let A = [' A ', 'b', 'c', 'd', 'e', 'f']; 让B = A.reduceRight ((a、c) = > (a.push (c), a), []); console.log (B);

有用的资源:

Array.prototype.reduceRight () 箭头功能 逗号操作符

其他回答

你可以使用slice()来复制,然后reverse()它

var newarray = array.slice().reverse();

Var array = ['a', 'b', 'c', 'd', 'e']; Var newarray = array.slice().reverse(); console.log (a、数组); console.log(“na”,newarray);

在ES6:

const newArray = [...array].reverse()
const arrayCopy = Object.assign([], array).reverse()

这个解决方案:

-成功复制array

-不会改变原始数组

-看起来它在做它该做的事

是否有类似的简单策略来反转数组而不改变原始数组的内容(不发生突变)?

是的,有一种方法可以通过使用to[Operation]来实现这一点,它返回一个带有应用操作的新集合(目前处于第3阶段,很快就会可用)。

实现方式如下:

const arr = [5, 4, 3, 2, 1];

const reversedArr = arr.toReverse();

console.log(arr); // [5, 4, 3, 2, 1]

console.log(reversedArr); // [1, 2, 3, 4, 5]

有一个新的tc39提案,它向Array添加了一个toReversed方法,该方法返回数组的副本,而不修改原始数组。

提案示例:

const sequence = [1, 2, 3];
sequence.toReversed(); // => [3, 2, 1]
sequence; // => [1, 2, 3]

由于它目前处于第3阶段,可能很快就会在浏览器引擎中实现,但与此同时,polyfill可以在这里或core-js中使用。