有人可以确认这个理论是不是正确吗? - 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]

因此,它不是保留原始数组不变,而是将其反转。它返回反转数组的值,因此multipleValuesreverse 都设置为反转值。

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 & 数组的主要内容,如果未能解决你的问题,请参考以下文章

有人在mysql里面碰到过这个错误吗

Android 地理围栏示例代码中的错误?有人可以确认吗?

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

$(...).Jcrop 不是函数

有人可以请我选择正确的路径吗

有人知道如何正确使用 onActivityReenter 吗?