第十八天
(题目来源: 前端每日知识3+1)
Javascript题目
问题解答
解题思路
- 第一种方法: 使用toString()方法+indexOf()+parseFloat()+toFixed()
function decimal(a, b) {
let lena = a.toString().indexOf('.') == -1 ? 0 : a.toString().length - a.toString().indexOf('.') - 1
let 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].length
let lenb = !b.toString().match(/(?<=\.)\d+/) ? 0 : b.toString().match(/(?<=\.)\d+/)[0].length
// 使用toStrong的方法将数据转换成字符串用正则表达式的方法,使用排除匹配 match得到小数点后的字符串 如果匹配不到则返回null
let 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:true
return 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'));