Поворот массива в разных браузерах - PullRequest
0 голосов
/ 08 февраля 2019

Запустите в консоли Firefox следующее: Array.reverse([0,1]);

Результат: [1,0]

Запустите его снова в Chrome:

Array.reverse is not a function

Весь смысл того, что я пытался это сделать, состоял в том, что я хотел превратить массив в его копию, чтобы он не изменил оригинал.Мой вопрос: какой браузер имеет правильное поведение?

Мне кажется, что , так как reverse () должен быть в Array.prototype , Firefox неверен.Тем не менее, поведение Firefox более полезно.Так это ошибка Firefox?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Firefox представлен несколько лет назад Универсальный метод массива в JS 1.6, но, как упоминалось на связанной странице:

"Они не являются частью стандартов ECMAScript и не являютсяподдерживается не Gecko-браузерами. "

И:

Обобщенные массивы нестандартны, устарели и будут удалены в ближайшем будущем.

Поэтому вам следует избегать их.

Более важно, это не решит вашу проблему.Вы сказали, что хотите избежать изменения оригинала, но Array.reverse(arr) эквивалентен arr.reverse(), поэтому вы все равно изменяете исходный массив.

Если вы хотите избежать этого, вам следует создать копиюЭто.Если вам просто нужна мелкая копия, вы можете сделать:

let arr = [0, 1];
let reversed = [...arr].reverse();

console.log(arr, reversed); // [0, 1], [1, 0]
0 голосов
/ 08 февраля 2019

Array.prototype.reverse не является статическим методом в Chrome (и некоторых других браузерах, например Safari).Вы должны сделать это так:

console.log([0, 1].reverse());
...