Данный метод изменяет исходный массив.
После его применения порядок элементов в массиве меняется на обратный.
Он возвращает ссылку на измененный массив.
arr = [1,2,3]
a = arr.reverse() // [ 3, 2, 1]
for(var i=0; i<a.length; i++) {
alert(a[i]) // 3, 2, 1
}
Обратите внимание, никакого нового массива не создается. Изменяется сам массив arr
и возвращается ссылка на измененный массив.
arr = [1,2,3]
a = arr.reverse() // [ 3, 2, 1]
alert(a === arr) // true
Не повторяйте моей ошибки - я считал, что этот метод сортирует массив по убыванию. На самом деле, он просто меняет порядок следования элементов на противоположный.
А я вообще всегда думал, что reverse() генерирует новый массив и возвращает ссылку на него, а старый остаётся без изменений. Если бы не JS-консоль и мой гениальный моск, я бы так и дальше думал.
но всё же, почему разработчики так не сделали? к примеру, хотелось бы делать так:
Это фишка производительности или что?
В текущем существующем случае для получения вышеописанного метода приходится делать так:
Что мешает расширить прототип?
А зачем? И так же работает
var a = [1,2,3,4];
var b = a.reverse();
console.log(b);
VM81:3 (4) [4, 3, 2, 1]
Спасибо, капитан!
Прототипы - сила. Можно еще reverse() для String задать:
ошибка в последней строке
});
надо убрать скобку перед ;
Илья спасибо за подробное объяснение, все это работает, а как насчет например если -123? чтобы вернуло -321?
вот мой код
var x = 123;
var reverse = function (x) {
var n = x.toString();
var rev = [];
for (var i = n.length-1; i >=0; i--){
rev+=n[i]
}
return parseInt(rev)
}
reverse(x);
ФУНКЦИЯ ВОЗВРАЩАЕТ ЗНАЧЕНИЕ - ЗНАЧИТ ПРОСТОЙ ЕЕ ВЫЗОВ НИЧЕГО НЕ ДАСТ!!
НАДО ПРИСВОИТЬ ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ. Т.Е
y=reverse(x);
а потом распечатать
document.write(y);
или просто
document.write(reverse(x));
и не обязательно в функции обьявлять переменную rev как массив,
так как вместо числа фунция вернет не число, а массив, что не есть хорошо.
т.е. окончательно код функции вместе с ее вызовом будет такая
var x = 123;
var reverse = function (x) {
var n = x.toString();
var rev = "";
for (var i = n.length-1; i >=0; i--) rev+=n[i];
return parseInt(rev);
}
document.write(x+"");
y=reverse(x);
document.write(y+"");
Могёт кто нибудь подсказать зачем нужны скобки у reverse()
потому что это метод, а не свойство ))
Помогите пожалуйста! Мне надо на JS написать функцию которая будет работать аналогично методу reverse() но н должна использовать данный метод