一、String字符串
堆栈
-
转义字符:
\转义符后面可以识别0-377的三位八进制数(latin-1字符)
console.log( 'abc\123' );// 'abcS' console.log( 'abc\1234' );// 'abcS4' console.log( 'abc\951' );// 'abc951' -
方法
- 转换进制
- parseInt(string,radix):转换一个数为十进制.
radix:原有数的进制 - toString(radix):输出一个
radix进制的进制数
- parseInt(string,radix):转换一个数为十进制.
- 截取
- substr(start, length):length 截取长度
var str = '123456789'; console.log( str.substr(2,-2) );// '' - subString(start,end):end 结束索引(不包括)
var str = '123456789'; // 1.start和end谁小谁就是起始位置,另一个是结束位置 console.log( str.substring(5,1) );// '2345' // 2.end为负数,从0开始 -> '12' console.log( str.substring(2,-2) );// '12' - slice(start,end):end 结束索引(不包括)
var str = '123456789'; console.log( str.slice(5,1) );// '' end不能小于start
- substr(start, length):length 截取长度
- 分割 split()
var url = 'https://www.baidu.com/s?wd=tupian&spt=123&rsv=0xcbeff' let index=url.indexof('?') let str=url.substr(index+1) //wd=tupian&spt=123&rsv=0xcbeff let arr=str.split('&') //['wd=tupian', 'spt=123', 'rsv=0xcbeff'] arr.forEach(item=>{ let arr=item.split('=') if(arr[0]=='spt') console.log(arr[1]) //123 }) - 替换 replace()
let str='蹬蹬噔喜欢看奇幻电影' let res=str.replace('蹬蹬噔',function(str){ let length = '' for(let i in str){ length += '*' } return length }) console.log(res)
- 转换进制
-
包装:在需要时,会被包装成对应的object类型
let str = 'hello' //String 基本类型 let str = new String('hello') //object 基本包装类型-
基本类型:string、number、bollean、null、undefined'
-
基本包装类型:string、number、bollean
var res = str.charAt(0); console.log( str.length );以上代码执行时,JS引擎会自动进行包装
- 1.临时创建str所对应的object对象
var _str = new String('hello') - 2.通过
_str对象添加、调用属性、方法_str.hehe = '呵呵' var res = _str.charAt(0); - 3.销毁临时创建的
_str对象_str = null
- 1.临时创建str所对应的object对象
-
二、类型转换
-
undefined、null与其他类型比较时,不做隐式转换
-
任意值与布尔值比较时,都转化成
Number -
转换成false的类型
- undefined
- null
- NaN
- ''
- 0
- -0
-
转化成数字
- undefined -> NaN
- null -> 0
- '' -> 0
- [] -> 0
- {} -> NaN
- fn -> NaN
运算
- 1.根据运算优先级进行运算
- 2.基本数据类型和
object类型比较时,object->基本类型- 调用
valueOf()方法,返回原始值 - 调用
toString()方法,返回字符串值
- 调用
- 3.字符串和布尔值比较时,转换成数字
console.log( [] == ![] ) //true 基本数据类型 //1. ![] == false // -> ( [] == false ) //2. [] => [].valueOf() // [] [].toString() // '' -> ( '' == false ) //3. '' => 0 , false => 0 -> ( 0 == 0 ) => true valueOf()、toString()//如何让条件成为true ? if (a==1 && a==2 && a==3) console.log( '见证奇迹的时刻!' )let a = { x:1 valueOf:function(){ // return 原始值 this -> a return this.x++ }, toString:function(){ return '[object object]' // this -> a } }
三、方法
字符串
-
转化大小写
toLowerCase():转化成小写toUpperCase():转化成大写
-
查找某个子串在字符串中第一次出现的索引,返回索引值,没有返回-1
indexOf():从左到右查找lastIndexOf():从右到左查找search():从左到右查找(可以配合正则使用)
-
截取
substr(start,length)subString(start,end)slice(start,end)
-
unicoded编码值
charCodeAt():字符 -> unicoded编码值(十进制)String.fromCharCode():unicoded编码值(十进制)-> 字符
常用汉字在unicoded编码表中的范围:4e00-9fa5 十六进制 -
其他
split(分割符):转化成数组replace(old,new):替换trim():去除字符串前后的空格- 不常用
concat():将多个字符串拼接成一个字符串,返回新的字符串charAt():返回指定索引位置的字符
数组
- 添加
push():末尾;返回数组新的长度unshift():开头;返回数组新的长度
- 删除
pop():末尾;返回被删除的元素shift():开头;返回被删除的元素
- 增删改
splice(start,number,val1,val2...):返回一个新数组(包含被删除的元素)
- 将数组转成字符串,返回字符串值
toString()join(分隔符)
- 常用
reverse():反转;返回反转后的数组sort(a,b):排序slice(start,end):截取concat():拼接;返回一个新数组
ES5
- 查询某个元素在数组中第一次出现的索引,返回索引,如果没有返回-1
indexOf():从左到右lastIndexOf():从右到左
- 遍历
forEach():没有返回值(undefined)map():返回一个新数组reduce(callback,initVlaue):根据数组的每一个值,归并为一个最终值reduce(function (previous,current,index,arr){} // callback 回调函数,遍历数组时,每次执行的函数 // initVlaue 初始值(reduce返回值的初始值) // previous 回调函数上一次的返回值 // current 当前遍历的数组元素 // index 代表current的索引 // arr 遍历的原数组
filter():筛选;返回一个新数组- 遍历数组,只要有一个条件为true,则返回true,否则返回false
some():找true( | | )every():找false( && )