/*
### 一、题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。假设我们的环境只能存储得下 32 位的有符号整数,
则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
**示例:**
- 输入: 123
- 输出: 321
- 输入: -123
- 输出: -321
- 输入: 120
- 输出: 21
*/
/*
### 二、解析
- 先把符号去掉,按正数处理;
- 将数字转换为字符串,反转字符串;
- 做数值范围判断;
- 将反转后的字符串转换为数字类型(避免开头是 0 的数据)。
*/
var reverse = function (x) {
var symbol = ""; // 符号
if (x < 0) {
symbol = "-";
x = Math.abs(x);
};
var result = (x + "").split("").reverse().join("");
if (result > -(Math.pow(2, 31)) && result < (Math.pow(2, 31) - 1)) {
return Number(symbol + result);
} else {
return 0;
};
};
console.log(reverse(123)); // 321
console.log(reverse(-123)); // -321
console.log(reverse(120)); // 21
//
/*
### 三、知识点:
*/
/*
#### Math.abs(x)
返回 x 的绝对值:
*/
console.log(Math.abs(-123)); // 123
// #### 数字转换字符串
var num = 123;
var strNum = num + "";
console.log(typeof num); // number
console.log(typeof strNum); // string
/*
#### split()
分割字符串,并将返回的结果放大数组中:
*/
console.log("123".split("")); // [ '1', '2', '3' ]
/*
#### reverse()
反转数组:
*/
console.log(['1', '2', '3'].reverse()); // [ '3', '2', '1' ]
/*
#### join()
把数组中的所有元素放到一个字符串中,可传入参数,指定要使用的分隔符,如果省略该参数,默认逗号分隔:
*/
console.log(['3', '2', '1'].join()); // 3,2,1
console.log(['3', '2', '1'].join("")); // 321
/*
#### Math.pow(x,y)
返回 x 的 y 次幂的值:
*/
console.log(Math.pow(2, 4)); // 16
/*
#### Number()
将字符串转换为数字类型:
*/
console.log(Number("012")); // 12
console