有人可以确认这个理论是不是正确吗? - Javascript & 数组
Posted
技术标签:
【中文标题】有人可以确认这个理论是不是正确吗? - Javascript & 数组【英文标题】:Can someone confirm if this theory is correct? - Javascript & Arrays有人可以确认这个理论是否正确吗? - Javascript & 数组 【发布时间】:2011-11-18 08:56:53 【问题描述】:我正在学习 javascript,而且才刚刚开始 - 我正在使用 Firefox 中的 Firebug 扩展来尝试一些事情。
我设置了 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
时,它却显示为正确?
我想因为我在开始时声明了变量,所以以后可以访问它,但是使用反向选项似乎取消了它??我误解了这个理论吗??
干杯
【问题讨论】:
【参考方案1】: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】:Array.reverse() 具有破坏性,会更改原始数组。它还返回对数组的引用,因此两个对象应该彼此相等。
【讨论】:
你第一个 - 我对快速答案感到惊讶:-)这完全有道理:-)【参考方案3】:The reverse
method 就地修改数组(同时也返回数组)。试试这样的:
var reversed = multipleValues.slice(0).reverse();
【讨论】:
是的,这给了我两个选择:-) 我现在也要研究 slice 选项 - 只是为了让我学会理解它:-)以上是关于有人可以确认这个理论是不是正确吗? - Javascript & 数组的主要内容,如果未能解决你的问题,请参考以下文章