Может ли кто-нибудь подтвердить, верна ли эта теория? - Javascript & Arrays - PullRequest
1 голос
/ 16 сентября 2011

Я изучаю javascript и действительно только начал - я использую расширение Firebug в Firefox, чтобы попробовать несколько вещей.

Я установил 2 var (iables), а второй использует значения изпервый:

var multipleValues =  [10,20,30,40,50] ;
var reverse = multipleValues.reverse();`

Теперь я хочу получить данные из этого массива с помощью оператора if и создать предупреждение следующим образом:

if (multipleValues [1] == 20) {
alert("Value is there.");
}
else {
alert("Value is not there");
}

Теперь вот мой вопрос - как же, когдаЯ запускаю код, подобный этому, он дает мне опцию «else», но когда я закомментирую var reverse, он выглядит как правильный?это позже, однако использование обратного варианта, кажется, отменяет его ??Я неправильно понимаю теорию ??

Приветствия

Ответы [ 3 ]

3 голосов
/ 16 сентября 2011

Метод reverse изменяет массив на месте (одновременно возвращая массив). Попробуйте что-то вроде этого:

var reversed = multipleValues.slice(0).reverse();
2 голосов
/ 16 сентября 2011

Array.reverse () является деструктивным и изменяет исходный массив. Он также возвращает ссылку на массив, поэтому два объекта должны быть равны друг другу.

2 голосов
/ 16 сентября 2011

reverse() инвертирует массив на месте.

var x = [1,2,3];
x.reverse();
console.log(x); //Now returns [3,2,1]

Таким образом, вместо того, чтобы оставить исходный массив неизменным, он переворачивает его. также возвращает значение обращенного массива, поэтому для multipleValues и reverse установлено обратное значение.

JavaScript может быть несовместимым. Некоторые собственные методы не модифицируют вызывающую функцию и вместо этого возвращают значение (как, скажем, String.prototype.split). Некоторые нативные методы только изменяют вызывающую функцию и не возвращают соответствующее значение (например, Array.prototype.splice). Некоторые нативные методы, такие как этот, Array.prototype.reverse, делают оба.

Один надежный способ узнать, что делает, что читать документацию; Я рекомендую Сеть разработчиков Mozilla , в которой reverse() описывается так:

Обратный метод транспонирует элементы вызывающего массива объекта на месте, изменяя массив и возвращая ссылку на массив.

...