【问题标题】:How to reverse a negative Number in JavaScript?如何在 JavaScript 中反转负数?
【发布时间】:2019-01-17 16:23:44
【问题描述】:

我正在尝试以这种方式获取输出,不幸的是,它没有返回预期值...

function reverseInt(int){
    let intRev ="";
    for(let i= 0; i<int.length; i++){
        intRev = int[i]+intRev ;
    }
    return intRev ;
}
console.log(reverseInt("-12345"));

【问题讨论】:

标签: javascript loops for-loop foreach


【解决方案1】:

使用

function reverseInt(n) {
    return Math.sign(n)*parseInt(n.toString().split('').reverse().join(''));
}

【讨论】:

  • @JasminMistry 当存在其他有效答案时,请不要要求绿色复选标记。顺便说一句,你是对我的答案投反对票的人吗?
【解决方案2】:

您的基本逻辑是正确的,但您需要处理正整数和负整数输入之间的差异。对于后者,您希望在 second 字符上开始构建反转字符串。另外,在返回反转的负数字符串时,还需要在前面加上一个负号。

function reverseInt(int){
    let intRev = "";
    let start = int < 0 ? 1 : 0;
    for (let i=start; i<int.length; i++) {
        intRev = int[i] + intRev;
    }
    return int < 0 ? '-' + intRev : intRev;
}

console.log("12345 in reverse is:  " + reverseInt("12345"));
console.log("-12345 in reverse is: " + reverseInt("-12345"));

编辑:一些答案正在使用基本字符串反转功能。但是,这个答案试图用你原来的方法来解决问题。

【讨论】:

    【解决方案3】:

    希望它会返回您期望的输出。

    function reverseInt(int){
        const intRev = int.toString().split('').reverse().join('');
        return parseInt(intRev) * Math.sign(int);
    }
    alert(reverseInt("-12345"));

    【讨论】:

      【解决方案4】:

      function reverseInt(number){
          let intRev ="";
          let len=number.toString().length;
          for(let i=len i>0; i--){
              intRev =intRev + int[i];
          }
          return intRev;
      }

      这将为您提供与您通过的数字相反的数字

      【讨论】:

        【解决方案5】:

        跳过减号并将其添加到最后,得到类似 -54321 的结果。

        例子:

        function reverseInt(int){
            let intRev ="";
            for(let i= 1; i<int.length; i++){
                intRev = int[i]+intRev ;
            }
            intRev ='-'+intRev;
            return intRev ;
        }
        console.log(reverseInt("-12345"));
        

        【讨论】:

          【解决方案6】:

          一个简短的小功能可以完成这项工作:)

          享受

          function reverseInt(int){
              const sign = int.match('-') ? '-' : '';
              return sign + Math.abs(int).toString().split('').reverse().join('');
          }
          console.log(reverseInt("-12345"));

          【讨论】:

            【解决方案7】:

            如果你想使用纯数学的解决方案,那么它应该是这样的:

            从数字中删除最后一个数字并将其附加到末尾 反转数字变量,直到原始数字消失并且 倒序号是完整的。

            代码:

            var reverse = function(x) {
                let reverse = 0;
                let sign = Math.sign(x);
                if (sign === -1) {
                    x = x*sign;
                }
                while (x > 0) {
                    reverse = (reverse * 10) + (x%10);
                    x = parseInt(x/10, 10);
                }
                return reverse * sign;
            };
            

            【讨论】:

              【解决方案8】:

              这可能有点矫枉过正,但这是我反转 int 的方法。

              将参数转换为字符串,使用字符串反向函数并加入数组。要检查参数是正数还是负数,我们检查从 Math.sign() 返回的内容。有一些快捷方式可以将反向项转换回 int。这可以扩展以检查 int 是否为 0,例如,它不是防弹的。 .

              function reverse(int){
                let r = (Math.sign(int) > 0) ? +[...Array.from(int.toString()).reverse()].join('') : -Math.abs([...Array.from(int.toString()).reverse()].join('').replace('-',''));
                return r
              }
              console.log(reverse(-123))

              【讨论】:

                猜你喜欢
                • 2012-04-08
                • 1970-01-01
                • 2011-05-21
                • 1970-01-01
                • 2017-09-15
                • 1970-01-01
                • 2021-07-13
                • 2012-10-03
                • 2015-03-29
                相关资源
                最近更新 更多