第十八天


(题目来源: 前端每日知识3+1)

Javascript题目

题目: JavaScript计算题 - 图1

问题解答

解题思路

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

Javascript题目2

题目: JavaScript计算题 - 图2

问题解答2

解题思路2

  1. // 仅能判断有无相同的连续字符
  2. function checkStrRepeat(str) {
  3. let reg = /(\w+)\1/
  4. // return reg.test(str)
  5. return !str.match(reg) ? false : true
  6. }
  7. console.log(checkStrRepeat('23'));
  8. // 扩展 判断字符串中有没有相同的字符(不需要连续)
  9. function checkStrRepeat(str) {
  10. let reg = /(\w+)\w*\1/
  11. // return reg.test(str)
  12. // return !str.match(reg)?false:true
  13. return str.match(reg)
  14. }
  15. console.log(checkStrRepeat('232'));

Javascript题目3

题目: JavaScript计算题 - 图3

问题解答3

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

解题思路3

知识扩展

  • hasOwnProperty字面这意思是: 有无自己的属性, 方法用于检测一个对象是否含有特定的自身属性, 返回一个布尔值, 实例化对象会继承构造函数的属性和方法
  • Object.getOwnPropertyNames()返回一个数组, 其中包含作为参数传递的对象自身属性的所有名称, 包括不可枚举的属性. 它不考虑继承的属性.
  • Object.key() Object.value() 和object.entries()方法 object介绍
  • 正则表达式表格查询正则查询地址