web前端经典面试编程题整理和练习

此篇主要整理面试时候的编程题和练习。

1、写一个js函数,实现对一个数字每3位加一个逗号,如输入100000, 输出100,000(不考虑负数,小数)—百度前端面试题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const pos = 1000
function paser (num) {
let left = num
let mod = 0
let result = ''
while (left >= pos) {
let temp = parseInt(left / pos)
mod = left % pos
left = temp
result = ',' + fitZero(mod) + result
}

result = left + result
return result
}

// 补齐0
function fitZero (num) {
let str = num.toString()
while(str.length < (pos.toString().length - 1)) {
str = '0' + str
}
return str
}

// 测试用例
paser(0) // 0
paser(1000) // 1,000
paser(1999) // 1,999
paser(199912314141) // 199,912,314,141
paser(988989898989888) // 98,898,989,898,988

思路: 结果是正确的,例如除法和求余方法做是比较简单和清晰的。当然也可以使用字符串/数组做法的做法:
下面是字符串/数组解法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// console.log(res)

const pos = 1000
function paser (num) {
let str = parseInt(num).toString().split('')
let len = pos.toString().length - 1
let res = ''
while(str.length > len) {
res = ',' + str.splice(-3, 3).join('') + res
}

res = str.join('') + res
return res
}

paser(0) // 0
paser(1000) // 1,000
paser(1999) // 1,999
paser(199912314141) // 199,912,314,141
paser(988989898989888) // 98,898,989,898,988