我正在学习javascript并且刚开始 - 我正在使用Firefox中的Firebug扩展来尝试一些事情。
我设置了2个var(iables),第2个使用了第一个的值:
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
时它出现了正确的结果?
我想,因为我在开始时声明了变量,我可以在以后访问它,但是使用反向选项似乎取消了它?我误解了理论吗?
干杯
答案 0 :(得分:3)
The reverse
method修改数组(同时返回数组)。尝试这样的事情:
var reversed = multipleValues.slice(0).reverse();
答案 1 :(得分:2)
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 Developer Network,其中描述了reverse()
:
reverse方法转置调用数组对象的元素 就地,改变数组,并返回对数组的引用。
答案 2 :(得分:2)
Array.reverse()具有破坏性,可以更改原始数组。它还返回对数组的引用,因此两个对象应该彼此相等。