Как работает JavaScript array.reverse ()? - PullRequest
0 голосов
/ 09 сентября 2018

Как сделать обратную копию массива, используя .reverse()?Я не могу обернуть голову вокруг этого.

Это моя функция:

function flipArray(inputArray){
let origArray = inputArray;
let flippedArray = origArray.reverse();

console.log(inputArray);
console.log(origArray);
console.log(flippedArray);
}

flipArray([1,2,3]);

Я бы ожидал этого ...

[1, 2, 3]
[1, 2, 3]
[3, 2, 1]

или этого ...

[1, 2, 3]
[3, 2, 1]
[3, 2, 1]

но это то, что я получаю ...

[3, 2, 1]
[3, 2, 1]
[3, 2, 1]

Почему даже inputArray меняется на противоположный?Есть ли другой способ сделать это, кроме цикла for?

1 Ответ

0 голосов
/ 09 сентября 2018

Array.prototype.reverse обратный массив на месте . Он изменяет исходный массив и возвращает ссылку на него. Чтобы создать копии исходного массива до его обращения, вы можете использовать Array.prototype.slice, например:

function flipArray(inputArray){

    let origArray = inputArray.slice(0);
    let flippedArray = inputArray.slice(0).reverse();

    console.log(inputArray);
    console.log(origArray);
    console.log(flippedArray);
}

flipArray([1,2,3]) теперь производит

[1,2,3]
[1,2,3]
[3,2,1]
...