第十八天
(题目来源: 前端每日知识3+1)
Javascript题目

问题解答
解题思路
- 第一种方法: 使用toString()方法+indexOf()+parseFloat()+toFixed()
function decimal(a, b) {let lena = a.toString().indexOf('.') == -1 ? 0 : a.toString().length - a.toString().indexOf('.') - 1let lenb = b.toString().indexOf('.') == -1 ? 0 : b.toString().length - b.toString().indexOf('.') - 1// 使用indexOf的方法将数字型转换为字符串,然后在字符串中寻找 并且返回第一次出现的位置let max = Math.max(lenb, lena)// 或者使用if判断计算,第二种方法中展示return parseFloat(a * b).toFixed(max) // 使用parseFloat方法将得到的字符强制转为浮点型数字,并且使用toFixed的方法将计算后的数字 四舍五入的方式}console.log(decimal(1.2231, 3.3212321)); //4.0621990 计算结果保留7位小数
- 第二种方法: 正则排除匹配+三元表达式
function decimal(a, b) {let lena = !a.toString().match(/(?<=\.)\d+/) ? 0 : a.toString().match(/(?<=\.)\d+/)[0].lengthlet lenb = !b.toString().match(/(?<=\.)\d+/) ? 0 : b.toString().match(/(?<=\.)\d+/)[0].length// 使用toStrong的方法将数据转换成字符串用正则表达式的方法,使用排除匹配 match得到小数点后的字符串 如果匹配不到则返回nulllet max = lena > lenb ? lena : lenb; // 三元表达式return parseFloat(a * b).toFixed(max) // 使用parseFloat方法将得到的字符强制转为浮点型数字,并且使用toFixed的方法将计算后的数字 四舍五入的方式}console.log(decimal(1.2231, 3.3212321)); //4.0621990 计算结果保留8位小数
Javascript题目2

问题解答2
解题思路2
// 仅能判断有无相同的连续字符function checkStrRepeat(str) {let reg = /(\w+)\1/// return reg.test(str)return !str.match(reg) ? false : true}console.log(checkStrRepeat('23'));// 扩展 判断字符串中有没有相同的字符(不需要连续)function checkStrRepeat(str) {let reg = /(\w+)\w*\1/// return reg.test(str)// return !str.match(reg)?false:truereturn str.match(reg)}console.log(checkStrRepeat('232'));
Javascript题目3

问题解答3
function isUSD(str) {let reg = /^\$\d{1,3}(,\d{3})*(\.\d{2})?$/return str.match(reg)}console.log(isUSD('$20,933.98'));
