带符号的反向编号

时间:2018-08-26 16:43:04

标签: javascript function reverse

如何反转包括符号的数字? (例如:-659 => -956

此外,结尾处为零的数字应按以下方式反转:

1000 => 1

50000 => 5

我当前的结果是:

-784 => 487-

1000 => 0001

这是我的功能:

function reverseNumber(num)
{
    num = num.toString();
    return num.split("").reverse().join("");
}
console.log(reverseNumber(-5698));

7 个答案:

答案 0 :(得分:4)

您可以在处理前检查数字的符号。这是一个有效的例子

function reverseNumber(num)
{
  sign = num < 0 ? '-' : '';
  num = Math.abs(num) + "";
  return Number(sign + num.split("").reverse().join(""));
}
console.log(reverseNumber(-1000));

答案 1 :(得分:2)

您可以保存该符号,并在以后使用绝对值进行应用。

function reverse(n) {
    return (n > 0 || -1) * Math.abs(n).toString().split('').reverse().join('');
}

console.log(reverse(-1000));
console.log(reverse(1000));

答案 2 :(得分:0)

这是一种使用辅助函数处理反转的方法,然后根据reverseNumber的符号在n函数中有条件地调用它:

const reverse = s => ("" + s).split("").reverse().join("");

const reverseNumber = n => +(n < 0 ? `-${reverse(-n)}` : reverse(n));

console.log(reverseNumber(-5698));
console.log(reverseNumber(-1));
console.log(reverseNumber(-1.3));
console.log(reverseNumber(1000));

答案 3 :(得分:0)

您也可以使用Math.sign()尝试这种方式,以检查数字是正数,负数还是零。然后,如果negative返回负值,即false,然后将其设置为Math.sign(num),则最初使用标志<1true。还要使用Math.abs()使其始终为正,然后再用reverse()使其反转。最后根据negative标志在数字前加上符号。

function reverseNumber(num) {
  pos_neg = Math.sign(num);
  negative = false;
  if (pos_neg < 1) {
    // treat as negative value
    negative = true;
    num = Math.abs(num);
  }

  num = num + "";
  expression = Number(num.split("").reverse().join(""));
  return negative ? - expression : expression ;
}
console.log(reverseNumber(1000));
console.log(reverseNumber(50000));
console.log(reverseNumber(-784))

答案 4 :(得分:0)

设置negative标志为负数,使用数字的绝对值,如果negative标志为负,则将其转换为负数,然后再返回设置为true

function reverseNumber(num){
    let negative = (num<0) ? true : false;
    num = Math.abs(num).toString();
    num = Number(num.split("").reverse().join("") )
    return negative ? (num*-1) : num 
}
console.log(reverseNumber(-5698));
console.log(reverseNumber(1000));

答案 5 :(得分:0)

首先将数字转换为其绝对值,然后将其取反。如果数字为负,则在末尾添加“-”号。另外,如果反转的数字的前导零,则借助reg表达式将其消除。

function reverseNumber(num)
{
   var reversed = Math.abs(num).toString().split("").reverse().join("");
   reversed = (num < 0) ? reversed + "-": reversed;
   return reversed.replace(/^0+/, '');
}
console.log(reverseNumber(10000));
console.log(reverseNumber(-987));
console.log(reverseNumber(-10000));

答案 6 :(得分:0)

function reverseNumber(num)
{
    var sign = Math.sign(num);
    return parseInt(num.toString().replace("-","").split("").reverse().join(""),10) * sign;
}

更正确地处理浮点数:

function reverseNumber(num)
{
    var sign = Math.sign(num);
    return Number(Math.Abs(num).toString().split("").reverse().join("")) * sign;
}