【问题标题】:javascript for loop orderjavascript for 循环顺序
【发布时间】:2014-05-17 19:01:34
【问题描述】:
var x = ["a", "b", "c"];
for(var i = 0; i < x.length; i++){

x[i] = x[2 - i];

}

My approach:
for i = 0 => x[0] = x[2] (which is "c", so replace "a" with "c")
for i = 1 => x[1] = x[1] (which is "b", so replace "b" with "b")
for i = 2 => x[2] = x[0] (which is "a" so replace "c" with "a")
for i = 3 test failed, stop.
so x = ["c", "b", "a"]

为什么控制台返回 x 为 ["c","b","c"]? 有人可以告诉我我是否完全误解了循环逻辑吗?谢谢!

【问题讨论】:

  • 你在找x.reverse()吗?

标签: javascript loops for-loop


【解决方案1】:
var x = ["a", "b", "c"];
for(var i = 0; i < x.length; i++){

x[i] = x[2 - i];

}

让我们把这段代码写出来吧:

var x = ['a', 'b', 'c'];

x[0] = x[2]; // ['c', 'b', 'c']
x[1] = x[1]; // ['c', 'b', 'c']
x[2] = x[0]; // ['c', 'b', 'c']

问题是当您到达i = 2 时,您已经修改了x[0] = x[2],所以x[2] = x[0] 毫无疑问没有结果。

你可以使用Array#reverse方法,我认为:

var x = ['a', 'b', 'c'];
x.reverse(); // ['c', 'b', 'a']

【讨论】:

    【解决方案2】:

    编辑:整洁!不知道Array.reverse(),肯定比下面简单!

    到第三次迭代发生时,第一个元素已经在第一次迭代中设置为“c”。

    最简单的方法是简单地为输出创建第二个数组:

    var x = ["a", "b", "c"];
    var y = new Array(x.length);
    for(var i = 0; i < x.length; i++){
      y[i] = x[2 - i];
    }
    console.log(y)
    

    【讨论】:

      【解决方案3】:

      当 i = 2 时,x[0] 为 "c" ,你在 "i" 为 0 时替换它。所以它将是 ["c","b","c"]。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-07
        • 2018-03-24
        • 2013-03-21
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多