字符串、数组、数学对象各种常用方法总结
字符串

细节点
-
在JavaScript中,单引号、双引号、反引号包起来的都是字符串,每个字符串由多个字符组成,它和数组类似,也有自己的索引。
-
空字符串和空格不是一回事,空格要占一个字符
-
每个字符串的方法通过以下四个方面进行研究和学习:
- 方法的意义以及作用
- 参数
- 方法的返回值
- 每一个操作都是直接操作值,对原始字符串不会产生任何影响
查找字符串
charAt([index])
- 作用及意义:根据索引获取指定位置的字符
- @params:索引
- @return:索引对应的字符
- 是否改变原字符串:不改变
- 注意:直接基于索引获取字符,在当前索引并不存在的前提下,获取到的为空字符串,而基于 字符串[索引] 获取到的是undefined。
charCodeAt([index])
- 作用及意义:在charAt的基础上获取指定索对应字符的UNICODE编码
- @params:索引
- @return:UNICODE编码
- 是否改变原字符串:不改变


String.fromCharCode([UNICODE编码])
- 作用及意义:获取UNICODE编码对应的字符
- @params:UNICODE编码
- @return:UNICODE编码对应的字符
- 是否改变原字符串:无


字符串截取
substr(n,m)
- 作用及意义:从索引n开始截取m个字符
- @params:n,m
- @return:截取的字符串
- 是否改变原字符串:不改变


substring(n,m)
- 作用及意义:从索引n开始,找到索引为m,但是不包含m,找到的截取
- @params:n,m
- @return:截取的字符串
- 是否改变原字符串:不改变


slice(n,m)
- 作用及意义:作用类似于substring,但是slice支持以负数为索引
- @params:n,m
- @return:截取的字符串
- 是否改变原字符串:不改变
str.substring(0);//字符串克隆
str.slice(-6,-3);//索引从末尾开始,从倒数第六个截取到倒数第三个;第一个参数要比第二个小
str.slice(str.length-6,str.length-3);//等价于上边的写法


检测是否包含某项
indexOf(str,n)
- 作用及意义:获取在当前字符串中第一次出现所在位置的索引,n控制从哪个地方开始
- @params:str,n
- @return:索引
- 是否改变原字符串:不改变
- 注意:
- 1.如果不包含则返回-1;
- 2.整体与数组中方法类似;
- 3.兼容所有版本浏览器


str.lastIndexOf(searchValue[, fromIndex])
- 作用及意义:获取searchValue最后一次出现位置的索引,该索引是searchValue首字母所在索引
- @params:searchValue 一个字符串,表示被查找的值。如果searchValue是空字符串,则返回fromIndex。fromIndex待匹配字符串searchValue的开头一位字符从 str的第fromIndex位开始向左回向查找。前提是包含searchValue
- @return:首字母索引
- 是否改变原字符串:不改变


includes(str)和数组中同样的效果
- 作用及意义:验证是否包含某个字符串
- @params:该字符串
- @return:true/false
- 是否改变原字符串:不改变


转换大小写
toLowerCase()
- 作用及意义:将字符串转为小写
- @params:该字符串
- @return:转换为小写字符串的结果
- 是否改变原字符串:不改变


toUpperCase()
- 作用及意义:将字符串转为大写
- @params:该字符串
- @return:转换为大写字符串的结果
- 是否改变原字符串:不改变


分隔
split([分隔符])
- 作用及意义:把字符串按照指定的分隔符拆分成数组(和数组中的join对应)该字符串必须包含该分隔符
- @params:分隔符
- @return:分隔后的数组
- 是否改变原字符串:不改变


替换
replace(regexp/substr, newSubstr/function)
- 作用及意义:以某种方式替换原部分字符串 参考--MDN
- @params:(regexp/substr, newSubstr/function)
- @return:新字符串
- 是否改变原字符串:不改变


去空格
trim()
- 作用及意义:去除首尾空格
- @params:无
- @return:去除空格后的字符串
- 是否改变原字符串:不改变
trimLeft()
- 作用及意义:去除首尾空格
- @params:无
- @return:去除空格后的字符串
- 是否改变原字符串:不改变
trimRight()
- 作用及意义:去除首尾空格
- @params:无
- @return:去除空格后的字符串
- 是否改变原字符串:不改变


数组

增删改(均改变原数组)
push
- 作用及意义:向数组的末尾追加元素
- @params:追加的项(多个任意类型)
- @return:新增数组的长度
- 是否改变原数组:改变


unshift
- 作用及意义:向数组的开头追加元素
- @params:追加的项(多个任意类型)
- @return:新增数组的长度
- 是否改变原数组:改变


shift
- 作用及意义:删除数组开头项
- @params:无
- @return:删除开头具体那一项
- 是否改变原数组:改变


pop
- 作用及意义:删除末尾的元素
- @params:无
- @return:删除那一项
- 是否改变原数组:改变


splice
- 作用及意义:实现数组增加、删除、修改
- 用法:从索引n开始,删除m个元素(m不写删除到末尾),用x占用替补删除的部分。
- @params:n,m,x
- @return:修改后的新数组
- 是否改变原数组:改变
【删除】返回的是包含删除项的数组
- ary.splice(0);可以清空数组,把原始数组的内容基于新数组保存起来,数组克隆。


- ary.splice(ary.length-1);删除最后一项


- ary.splice(0,1);删除第一项


【增加】ary.splice(n,0,x);在索引n的前面添加了x项;
- ary.splice(ary.length,0,x);在数组后面增加项


- ary.splice(0,0,x);在数组前面增加x项。




【修改】用x代替删除的m即可


查询和拼接
slice
- 作用及意义:实现数组的查询
- 用法:ary.slice(n,m)=>从索引n开始,找到索引为m处,不包含m
- @params:n,m
- @return:把找到的部分以新数组返回
- 是否改变原数组:不改变


- m&n都为负数情况
- n>m
- m&n都为小数
- 都是非有效数字
- n/m有一个大于索引
concat
- 作用及意义:实现数组合并
- @params:拼接的项多个任意值
- @return:拼接后的新数组
- 是否改变原数组:不改变


转字符串
toString
- 作用及意义:把数组转换为字符串
- @params:无
- @return:转换后的字符串,且每一项都用逗号分割
- 是否改变原数组:不改变


join
- 作用及意义:把数组转换为字符串
- @params:指定分隔符,字符串类型,不写默认为逗号
- @return:转换后的字符串割
- 是否改变原数组:不改变


let ary = [1,2,3];
let res = ary.join('+');
let result = eval(res);//将字符串转换为JS表达式,并计算出结果
是否包含某一项
indexOf
- 作用及意义:查找指定字符串第一次出现的位置索引值
- @params:指定查找的字符串
- @return:位置索引值(数字),如果数组中没有这一项,返回的结果是-1
- 是否改变原数组:不改变


lastindexOF
- 作用及意义:查找指定字符串最后一次出现的位置索引值
- @params:指定查找的字符串
- @return:位置索引值(数字),如果数组中没有这一项,返回的结果是-1
- 是否改变原数组:不改变
includes(ES6)
- 作用及意义:检测当前数组中是否包含某项
- @params:检测的具体某一项
- @return:true/false
- 是否改变原数组:不改变


排序和排列(改变原数组)
reverse
- 作用及意义:将数组倒过来排列
- @params:无
- @return:排列后的新数组
- 是否改变原数组:改变


sort
- 作用及意义:将数组中的每项有序排列
- @params:无|函数
无参数:会按照基数排序思想进行排序。函数:(a,b)=>a-b或者(a,b)=>a-b,前者升序,后者降序
- @return:排序后的新数组
- 是否改变原数组:改变


遍历和映射(不改变原数组)
forEach
- 作用及意义:遍历数组中的每一项
- @params:callback
- @return:无/undefined
- 是否改变原数组:不改变


map
- 作用及意义:数组映射
- @params:callback
- @return:映射后的新数组
- 是否改变原数组:不改变


reduce
- 作用及意义:数组映射
- @params:callback
- @return:由累加器记录每一次执行reducer函数,最后输出单个结果
- 是否改变原数组:不改变
- 基于reduce实现compose组合函数:把函数嵌套调用扁平化
function compose(...funcs){
return function anonymous(...args){
if(funcs.length===0) return args;
if(funcs.length===1) return funcs[0](...args);
return funcs.reduce((N,func)=>{
return Array.isArray(N)?func(...N):func(N)
},args)
}
}
filter
- 作用及意义:过滤数组中的每一项
- @params:callback
- @return:过滤为true的每一项组成的新数组
- 是否改变原数组:不改变


some
- 作用及意义:数组中存在一个符合函数条件的即可
- @params:callback
- @return:true/false
- 是否改变原数组:不改变

every
- 作用及意义:数组中全部符合函数条件才可以
- @params:callback
- @return:true/false
- 是否改变原数组:不改变

find
- 作用及意义:在数组中找第一个符合条件元素
- @params:callback
- @return:找到的那一项
- 是否改变原数组:不改变


数学对象常用方法
方法罗列
Math.abs([N]);//获取数字N的绝对值
Math.ceil([N]);//对数字N进行向上取整
Math.floor([N]);//对数字进行向下取整
Math.round([N]);//表示对数学N进行四舍五入
Math.max(N1,N2,...Nn);//在一组数中求出最大值
Math.min(N1,N2,...,Nn);//在一组数中求出最小值
Math.pow([N1],[m]);//获取数字N的m次幂
Math.sqxrt([N]);对数字N进行开平方
Math.radom();获取0~1之间的随机小数,每一次获取的小数都不一样
经典案例
- 获取[n,m]之间的随机整数
Math.round(Math.radom()*(m-n)+n);
转载自:https://juejin.cn/post/6844904148157251591