JS 数字方法

toString()
把数字的值以字符串的形式返回

  1. var x = 123
  2. console.log(x.toString())
  3. console.log(typeof x.toString()) //string

toFixed()
返回字符串值,包含了指定位数小数的数字

  1. var x = 123
  2. console.log(x.toFixed(3)) //123.000
  3. 最佳实践
  4. toFixed(2) 处理金钱

valueOf()
返回值为该对象的原始值

JS字符串方法

查找字符串中的字符串

  • indexOf()

    返回字符串中指定文本首次出现的索引

    第二个参数 : 检索位置

    1. var str = "The full name of China is the People's Republic of China.";
    2. var pos = str.indexOf("China");
    3. console.log(pos); //17

    lastIndexOf()
    两种方法 未找到文本则返回 -1

  • search()

**
更正:执行正则表达式和String 对象之间的一个搜索匹配

如果传入一个非正则表达式对象 obj,则会使用 new RegExp(obj) 隐式地将其转换为正则表达式对象。

**
搜索特定值的字符串,并返回匹配的起始位置
search 无法设置第二个开始位置参数

  1. str.search(regexp)
  1. var str = "The full name of China is the People's Republic of China.";
  2. var pos = str.search("China");
  3. console.log(pos); //17
  1. //忽略大小写
  2. var str="Visit W3School!"
  3. document.write(str.search(/w3school/i)) //6


提取字符串中的字符串


  • slice(重要) ```javascript str.slice(start [, end])
    返回从 start 到(但不包括)end 的字符串部分,不会改变原字符串

let str = “doraemon”; console.log(str.slice(0,1)) //d console.log(str.slice(0)) //doraemon 只有一个参数,截取剩余部分 console.log(str.slice(-4,-1)) //emo

注意: 如果slice() 里面没有参数,表示简单的复制

const obj = “12” const arr = obj.slice()

  1. - **substring()**
  2. 类似slice() 区别在于无法接受负的索引<br />**
  3. ```javascript
  4. str.substring(start [, end])
  5. 返回 start 和 end 之间的字符串部分。
  6. 这与 slice 几乎相同,但它允许 start 大于 end。
  7. let str = "doraemon";
  8. console.log(str.substring(0,1)) //d
  9. console.log(str.substring(0)) //doraemon
  10. console.log(str.substring(-4,-1)) // 空
  11. 不支持 负参数,如何是,被视为 0
  • substr()

类似slice() 区别在于第二个参数是提取的长度

  1. str.substr(start [, length])
  2. start 开始返回给定 length 的字符串部分。
  3. 与以前的方法相比,这个允许我们指定 length 而不是结束位置:
  4. let str = "doraemon";
  5. console.log(str.substr(0,5)) //dorae
  6. console.log(str.substr(0)) //doraemon
  7. console.log(str.substr(-4,-1)) // 空

总结

image.png

替换字符串内容

  • replace()

    用另一个值替换在字符串中指定的值, 返回值是新字符串

    默认只替换 首个匹配

  1. str = "Please visit Microsoft and Microsoft!";
  2. var n = str.replace("Microsoft", "ccc");
  3. console.log(n) //Please visit ccc and Microsoft!
  4. 正则表达式 /i(大小写不敏感)
  5. str = "Please visit Microsoft!";
  6. var n = str.replace(/MICROSOFT/i, "W3School");
  7. 正则表达式的 g 标志(用于全局搜索):
  8. str = "Please visit Microsoft and Microsoft!";
  9. var n = str.replace(/Microsoft/g, "W3School");

转换为大写和小写

toUpperCase()
转为大写

toLowerCase()
转为小写

concat()

连接两个或多个字符串

返回新字符串,不会修改原始字符串.

  1. var text1 = "chu"
  2. var text2 = "name"
  3. text3 = text1.concat(" ",text2)
  4. console.log(text3); //chu name

trim()

删除字符串两端的空白符

  1. var str = " Hello World! ";
  2. alert(str.trim());

提取字符串字符

charAt()
返回字符串中指定下标(位置)的字符串

  1. var str = "HELLO WORLD";
  2. str.charAt(0); // 返回 H

charCodeAt()
返回字符串中指定索引的字符 unicode 编码:

  1. var str = "HELLO WORLD";
  2. str.charCodeAt(0); // 返回 72

把字符串转换为数组

split()

  1. var txt = "a,b,c,d,e"; // 字符串
  2. txt.split(","); // 用逗号分隔
  3. txt.split(" "); // 用空格分隔
  4. txt.split("|"); // 用竖线分隔

https://www.w3school.com.cn/js/js_string_methods.asp

变量转换为数值

这些方法并非是数字方法,而是全局的 js 方法

  • Number()

可用于把js变量转换为数值

  1. Number('') //0
  2. Number('12.00') //12
  3. Number('foo') //NaN
  4. Number(new Date("2019-04-15")); // 返回 1506729600000
  • parseInt()

解析一段字符串并返回数值,允许空格,只返回首个数字

  1. parseInt("10"); // 返回 10
  2. parseInt("10.33"); // 返回 10
  3. parseInt("years 10"); // 返回 NaN
  4. 无法转换为数值,则返回 NaN
  • parseFloat()

解析一段字符串并返回数值,允许空格,只返回首个数字,可以将字符串转换成浮点数

  1. var num3=parseFloat("0908.5"); //908.5

二者差别:
当 parseInt() 函数所解析的是浮点数字符串时,取整操作是向下取整.

JS数学方法

平方根

  1. Math.sqrt(x)

实例应用

返回一组数中的最大值

Math.max()

使用 apply

  1. function getMaxOfArray(numArray) {
  2. return Math.max.apply(null, numArray);
  3. }

使用 扩展运算符

  1. var arr = [1, 2, 3];
  2. var max = Math.max(...arr);

如何判断一个值是否为数字

第一种 isNaN
返回一个布尔值

  1. 注意: isNaN("") // 传递空字符串时 false 会被当作数字0处理

第二种 parseFloat

  1. 如果是空字符串,则返回 NaN

第三种 正则

  1. function checkRate(input) {
  2.   var re = /^[0-9]+.?[0-9]*/;//判断字符串是否为数字//判断正整数/[1−9]+[0−9]∗]∗/;//判断字符串是否为数字//判断正整数/[1−9]+[0−9]∗]∗/
  3.   if (!re.test(nubmer)) {
  4.     alert(“请输入数字”);
  5.   }
  6. }

1.isNaN + typeof
需要注意的是
typeof NaN //number
isNaN(false) //false => 其中false是被当作0处理的

  1. function isNumber(obj){
  2. return typeof obj === 'number' && !isNaN(obj)
  3. }
  4. var arr = [1,2,3,4,"nihao1"]
  5. var newArr = arr.filter(item=>{
  6. return isNumber(item)
  7. })
  8. console.log(newArr)

2.hack 方法

  1. function isNumber(obj){
  2. return obj === +obj
  3. }

延申:
1.判断字符串

  1. function isString(obj){
  2. return obj === obj+''
  3. }
  4. console.log(isString(" ")) //true

2.判断布尔类型

  1. function isBoolean(obj) {
  2. return obj === !!obj
  3. }

去除一个数组中不是数字的值

  1. //判断一个值是不是数字
  2. var arr = [1,2,3,4,"nihao1"]
  3. var newArr = arr.filter(item=>{
  4. return !isNaN(item)
  5. })
  6. console.log(newArr)
  1. 用正则表达式,把"<div class='div_ce' align='center>合&nbsp;&nbsp;计</div>",去掉多余的,
  2. 只剩下“合&nbsp;&nbsp;计”
  3. /(<.*?>|\s+|&nbsp;)/igm

去除字符串的空格

  1. return str.replace(/\s+/g,"");