【问题标题】: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 时,它却显示为正确?

我想因为我在开始时声明了变量,所以以后可以访问它,但是使用反向选项似乎取消了它??我误解了这个理论吗??

干杯

【问题讨论】:

    标签: javascript arrays if-statement var


    【解决方案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 选项 - 只是为了让我学会理解它:-)
      猜你喜欢
      • 1970-01-01
      • 2016-01-03
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 2013-01-12
      • 2011-02-03
      • 2020-10-06
      • 2021-09-24
      相关资源
      最近更新 更多