如何在 JavaScript 中反转负数?

问题描述 投票:0回答:12

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

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
12个回答
12
投票

使用

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

4
投票

您的基本逻辑是正确的,但是您需要处理正整数和负整数输入之间的差异。对于后者,您需要开始在 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"));

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


1
投票

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

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


1
投票

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

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

代码:

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;
};

0
投票

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

这将为您提供与您传递的数字相反的数字


0
投票

跳过减号并将其添加到最后,得到类似 -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"));

0
投票

一个简短的小函数就可以完成这项工作:)

享受

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


0
投票

这可能有点矫枉过正,但是这是我反转 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))


0
投票

function reverseInt(n) {
    const isNegativeNumber = Boolean(n < 0)
    const reversedStringifiedNumber = n.toString().split('').reverse().join('')
    
    return parseInt(`${isNegativeNumber ? '-' : ''}${reversedStringifiedNumber}`)
}

console.log(reverseInt(1234))
console.log(reverseInt(-1234))
console.log(reverseInt(0))
console.log(reverseInt(-0))


0
投票

对于负/非负整数(不是字符串),这将起作用。

const reverseInteger = (int) => {
    let reversed = '';
    let sign = int < 0 ? 1 : 0;
    let convertIntToString = int.toString();
    for (let i = sign; i < convertIntToString.length; i++) {
        reversed = parseInt(convertIntToString[i] + reversed);
        //parseInt to convert to integer, doing this to mostly remove 
        //leading zeros
    }
    return int < 0 ? "-" + reversed : reversed;
};

console.log(reverseInteger(789));
console.log(reverseInteger(-51989000));

0
投票

这是正整数和负整数的解决方案

function reverseInteger(num){
  let isNegative = false;
  let integerString = String(num)

  if (Math.sign(num) === -1) {
    isNegative = true;
    integerString = integerString.replaceAll("-", "");
  }

  const reversedStringArray = String(integerString).split("").reverse("");
  const result = reversedStringArray.toString().replaceAll(",", "");

  return isNegative ? Number(`-${result}`) : Number(result);
}

0
投票

嗨,我发现这很棘手,但无论如何都是如此,就像简单的数学一样 注意:当您将负值乘以 -1 时,您会删除负值。负数抵消负数。

function invertInt(n) {
    return -n;
}

const inverted = invertInt(-15);
console.log(inverted);
© www.soinside.com 2019 - 2024. All rights reserved.