javascript 编码规范 - 正确使用parseInt
阅读原文时间:2023年07月10日阅读:3

修改 js 代码中 parseInt 的调用方式,使之通过全部测试用例

示例1

'12'

12

示例2

复制

'12px'

复制

12

示例3

'0x12'

0

function parse2Int(num) {
var type = typeof num;
if (type === "number") {
if (num % 1 === 0) {
return num;
} else {
return num-num%1;
}
} else if (type === "string") {
var s = "", n0 = "0".charCodeAt(0), n9 = "9".charCodeAt(0);
for (var i = 0; i < num.length; i++) {
var c = num.charCodeAt(i);
if (n0 <= c && c <= n9) {
s += num.charAt(i);
} else {
break;
}
}
function s2i(s) {
var n = 0, n0 = "0".charCodeAt(0);
for (var i = 0; i < s.length; i++) {
n = 10*n + (s.charCodeAt(i)-n0);
}
return n;
}
return s2i(s);
}
return NaN;
}

* 流程控制

实现 fizzBuzz 函数,参数 num 与返回值的关系如下:
1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz
2、如果 num 能被 3 整除,返回字符串 fizz
3、如果 num 能被 5 整除,返回字符串 buzz
4、如果参数为空或者不是 Number 类型,返回 false
5、其余情况,返回参数 num

Input:15 Output: fizzbuzz

function fizzBuzz(num) {
if (!num) {return !1;}
if (typeof num === "number") {
var a = num%3===0, b = num%5==0;
return a&&b ? "fizzbuzz" : a ? "fizz" : b ? "buzz" : num;
}
return !1;
}

* 求 a 和 b 相乘的值,a 和 b 可能是小数,需要注意结果的精度问题

input: 3, 0.0001

output: 0.0003

function multiply(a, b) {
var d1 = d2 = 0;
while (a%1 !== 0) {
a *= 10;
d1++;
}
while (b%1 !== 0) {
b *= 10;
d2++;
}
var d = d1+d2;
return parseFloat(a * b * Math.pow(0.1, d)).toFixed(d);
}