JS常用函数用法总结
在前端的应用和学习中,需要经常用到的函数和用法总结,便于查阅和记忆。(随时更新)
1、类型转换
1)string→number:praseInt()
parseInt(string,n):将首位为数字的字符串以n进制转换为数值;(如果首位不是数字,则返回NaN)
2)number→string:toString()
number.toString():将数值number转换为字符串
2、数组
1)排序
sort()
该函数有两种常用形式:
- array.sort()
默认以字符编码顺序进行排序 - array.sort( function (a , b ) {…})
按照括号内函数返回值进行排序:如果返回值大于0,交换a,b两个元素的位置;否则不变;
常用的形式为:
array.sort(function (a,b) { //升序
return a-b;
});
array.sort(function (a,b) { //降序
return b-a;
});
reverse()
将数组元素颠倒顺序。
2)添加元素
arr1.concat(arr2,…)
用于依次连接多个数组,返回新数组。
push(ele1,…)
向数组末尾依次添加元素,返回新数组。
unshift(ele1,…)
向数组开头依次添加元素,返回新长度。
3)删除元素
pop()
删除最后一个元素,返回该元素值。
shift()
删除第一个元素,返回该元素值。
splice(start,length[,ele1,…])
从下标为start的元素开始,删除其后length个元素(或用ele1,…将该length个元素替换)
4)截取元素
slice(start[,end])
从下标start的元素开始,到end-1(默认数组结尾)元素,返回新数组
5)合并array→string
array.toString()
以逗号间隔
array.join(‘连接符’)
自定义连接符,各元素间以连接符相连接
3、字符串
1)检索
indexOf(sub[,start])
从start(可选,默认为0)到字符串最后,检索sub字符串,返回首次出现的下标值,没有则返回-1。
lastindexOf(sub[,start])
从start(可选,默认为0)到字符串最后,检索sub字符串,返回最后出现的下标值,没有则返回-1。
2)截取字符串
slice(start[,end])
截取下标start到end-1部分的字符串(end默认结尾)
substr(start,length)
截取从下标start开始的length个字符
3)连接字符串
str1.concat(str2,…)
一次连接字符串,返回新的字符串
4)拆分string→array
string.split(‘分隔符’[,limit])
将string以分隔符进行分割,返回数组(limit可选,指定数组最大长度)
5)Unicode编码转换
String.fromCharCode(num1,…)
该函数接收若干个Unicode值,返回对应字符组成的字符串。
String.charCodeAt(index)
返回字符串指定index索引位置字符的Unicode编码值。
6)判断字符串的值
两字符串是否相等
== 判断值是否相等
=== 判断类型是否相同+值是否相等
字符串是否为空
var strings = '';
if (string.length == 0)
{
alert('不能为空');
}
字符串是否为空
var strings = ' ';
if (strings.replace(/(^s*)|(s*$)/g, "").length ==0)
{
alert('不能为空');
}
4、Map/Set对象
Map 和 Set对象是ES6中定义的集合,两对象的方法和属性基本相同。
1)Map对象
Map对象中元素都是以 “键-值”对 存储的,键和值可以是任何形式。
创建:
var map = new Map();
//可传入二维数组作为参数,实现将数组转换为Map对象
设值:
map.set(key,value);
获取值:
map.get(key);
遍历: 遍历Map对象有很多种形式.
注意:Map对象的遍历顺序就是插入顺序。
Map对象提供了三个遍历器:keys()、values()、entries(),故可以有以下遍历方式:
for(let key of map.keys()){...}
for(let value of map.values()){...}
for(var item of map.entries()){...}
//以上方式中,分别用item[0]和item[1]来表示键和值;
for(var [key,value] of map.entries()){...}
for(let [key,value] of map){...}
除此之外,还提供了一个遍历函数:
map.forEach(function(item,key,value){...})
判断是否含有指定元素:
map.has(key);
删除指定元素:
map.delete(key);
清除集合:
map.clear();
集合大小:
用map.size
来获取集合元素个数。
Map→Array: 使用扩展运算符(…)
[...map] //转换成二维数组,数组中每个元素(数组)含有两个元素:键和值
同理有:[...map.keys()]
、[...map.values()]
、[...map.entries()]
2)Set对象
Set对象是值的集合,允许存储任意类型的唯一值,这意味在一个Set集合中,相同值只能出现一次,当向Set中插入两个相同的值,只会存储一个在集合中。
同样的,遍历顺序就是插入顺序。
创建:
var set = new Set();
//可传入一个可迭代对象作为参数,例如:数组
添加元素: 向末尾添加元素
set.add(value);
判断是否含有特定元素:
set.has(value);
删除特定元素:
set.delete(value);
集合大小:
用set.size
来获取集合元素个数。
遍历:
Set的遍历与Map类似,可使用for循环或forEach()函数。需要注意的是,Set对象仍然拥有三个遍历器,keys()和values()存储的值是相同的,entries()返回的是[value,value]。
for(let key of set.keys()){...}
for(let value of set.values()){...} //以上二者是等价的
for(var item of set.entries()){...}
for(var [key,value] of set.entries()){...} //key和value值相同
for(let value of set){...}
或者
set.forEach(function(value){...})
Set→Array: 使用扩展运算符(…)
[...set]
总结:
由以上Set集合用法可以看出:Set相比数组,在插入元素,删除元素,查找元素,元素去重等方面存在优越性,可以减少代码复杂度,同时降低时间复杂度。