【问题标题】:js set x variable to y without using extra variable [duplicate]js将x变量设置为y而不使用额外的变量[重复]
【发布时间】:2017-09-09 07:39:40
【问题描述】:

如果我有一个

x = 5;
y = 6;

如何在没有中间附加变量的情况下设置这样的结果。

x = 6;
y = 5;

【问题讨论】:

    标签: javascript


    【解决方案1】:

    1) 只有使用数学运算才能做到这一点。将总和保存到第一个变量中。然后在第二个中保留总和与当前值的差,这将给出第一个值。在此之后,在第一个变量中保留总和和秒值的差值,这将为您提供第一个值。

    let x = 5;
    let y = 6;
    
    console.log(`x is ${x}, y is ${y}`);
    
    x = x + y;
    y = x - y;
    x = x - y;
    
    console.log(`x is ${x}, y is ${y}`);

    2) 使用语言功能,您可以通过 Array Destructuring 来实现。

    let x = 5;
    let y = 6;
    
    console.log(`x is ${x}, y is ${y}`);
    
    [x, y] = [y, x];
    
    console.log(`x is ${x}, y is ${y}`);

    3) 如果数字是整数,则使用著名的XOR swap algorithm

    let x = 5;
    let y = 6;
    
    console.log(`x is ${x}, y is ${y}`);
    
    x = x ^ y;
    y = x ^ y;
    x = x ^ y;
    
    console.log(`x is ${x}, y is ${y}`);

    【讨论】:

      【解决方案2】:

      使用es2015你可以做到

      [x,y] = [y,x]

      【讨论】:

        【解决方案3】:

        1) 您可以使用第三个变量来交换 x 和 y 值。所以,如果第三个变量是 temp.

        第一步 temp = x

        第二步 x = y

        第三步 y = temp

         var x = 5;
         var y = 6;
         var temp = 0;
        
          temp = x;
          x = y;
          y = temp;
        
          console.log('x =',x);
          console.log('y =',y);

        2) ES6

        var x = 5,
            y = 6;
        
        [x, y] = [y, x];
        
        console.log('x =', x, 'y =', y);

        【讨论】:

        • @anulik 此代码使用第三个变量交换 x 和 y。此代码有助于解决您的问题吗?
        猜你喜欢
        • 1970-01-01
        • 2013-04-27
        • 2020-06-17
        • 2011-08-22
        • 1970-01-01
        • 2012-10-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多