字符串方法
URL转码和反转
1.1【escape & unescape】
escape(url))
编码
unescape(escape(url))
解码
1.2【encodeURIComponent & decodeURIComponent】【推荐】
encodeURIComponent(url)
编码
decodeURIComponent(encodeURIComponent(url))
解码
1.3【encodeURI & decodeURI】
encodeURI(url)
编码
decodeURI(encodeURI(url))
解码
length
获取字符串长度
charAt(index)
返回字符串的第index个字符,index取值范围为0~str.length-1
charCodeAt()
返回在指定的位置的字符的 Unicode 编码
fromCharCode()
接受一个指定的 Unicode 值,然后返回一个字符串
indexOf(a,startIndex)
只能返回第一个
str.lastIndexOf(search,startIndex)
只能返回第一个
slice()
concat()
split(',', 3)
字符串转换数组
以逗号分割,分割前3个
replace(a, b)
字符串替换,将a替换为b,只能替换第一个
substr(a, b)
从a开始截取b个
substring(a, b)
从索引a开始到索引b(不包括b)不能写负数
toLowerCase
将整个字符串转成小写字母
toUpperCase
将整个字符串转成大写字母
数组方法
方法名 | 功能 | 返回值 | 是否改变原数组 |
---|---|---|---|
push() | 向数组尾部添加一个或多个元素 | 新数组长度 | 是 |
pop() | 删除数组的最后一个元素 | 删除的元素 | 是 |
unshift() | 向数组头部添加一个或多个元素 | 新数组长度 | 是 |
shift() | 删除数组的第一个元素 | 删除的元素 | 是 |
valueOf
:返回数组的本身
indexOf()
:arr.indexOf('A', 1)
返回指定元素索引,没有则返 -1
第二个参数,表示搜索的开始索引位置
toString()
:数组转字符串,不改变原数组
join()
:数组分割转字符串,默认逗号分隔
a.concat(b)
:合并多个数组,返回新数组,不改变原数组
reverse()
:翻转数组,返回改变的数组,影响原数组
slice(start, end)
:截取数组,返回截取的,不改变原数组
如果参数只有一个 -3,就从倒数第三个开始
从索引1开始到索引2 (不包括索引2),如果没有索引2就一直到最后
splice(start, num, add)
:删除数组部分,返回被删除的元素的数组,改变原数组
如果参数只有一个 -3,就从倒数第三个开始删
如果第一个参数为 -3,第二个参数为 2,就是倒着从第三个开始往后删两个元素
从 参数1索引开始删,参数2是删除个数 (如果没有参数2就一直删),参数3是删除位置插入新元素
sort(function(a,b){})
:对数组成员排序,默认按照字典顺序,改变原数组
参数是函数,return a - b
是升序, return b - a
是倒序
arr.flat(Infinity)
:拍平数组,返回新数组,不影响原数组
里面参数写 N 就拍平 N 层,可以是关键字 Infinity
new Set(arr)
数组去重,但是子项为对象无法去重
将set形式的对象转化为数组
- 方法一
const set = new Set([1,2,3,4,4,]);
[...set];
- 方法二
Array.from(set);
遍历数组
for(){}
:遍历
break 结束整个循环
countinue 结束当前循环,继续下一个循环
for(var a of arr){}
:遍历数组,a为当前每一项
for(var k in obj){}
:遍历对象,k为键,obj[k]为值
foreach(函数)
遍历每一项,没有返回值,不影响原数组
map(函数)
:处理每一项,返回处理后的新数组,不影响原数组,不会对空数组检测
例如 return item + 1 返回索引项加1的新数组
参数1当前元素,参数2当前索引,参数3原对象
filter(函数)
:筛选数组,返回满足条件的新数组,不改变原数组
例如 return item > 1 返回所有大于1的新数组
参数1当前元素,参数2当前索引,参数3原对象
every(函数)
:比较数组,每一项为true返回true否则返回false,不影响原数组
例如 return item > 1 所有项大于1才为true
参数1当前元素,参数2当前索引,参数3原对象
some()
:比较数组,任意一项为true返回true否则返回false,不影响原数组
例如 return item > 1 只要有一项大于1就返回true,返回true后就停止循环
参数1当前元素,参数2当前索引,参数3原对象
find()
:返回符合条件的第一个元素,否则返回undefined
例如 return item > 1 只要有一项大于1就返回这一项,然后停止循环
参数1当前元素,参数2当前索引,参数3原对象
findIndex()
:返回符合条件的第一个元素索引,否则返回 -1
例如 return item > 1 只要有一项大于1就返回这一项索引,然后停止循环
reduce()
:接收一个函数作为累加器
reduceRight()
:倒着累加
pre 为上一次的值 cur 为当前值
index 为当前索引 arr 为原数组
var arr = ["a", "b", "c", "d", "a"];
var newArr = arr.reduce(function (pre, cur, index, arr) {
cur in pre ? pre[cur]++ : (pre[cur] = 1);
return pre;
}, {});
console.log(newArr);
keys,values,entries
:和 for of
搭配使用
keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历
var a = ['a','b','c','d'];
for(var k of a.entries()){
console.log(k);
}
对象方法
Object.assgin({},a,b)
合并对象,键相同后面覆盖前面
第一层深拷贝,第二层往后浅拷贝
Object.create(proto,[propertiesObject])
创建一个新对象
Object.defineProperties(obj,props)
直接在一个对象上定义新的属性或者修改现有属性并返回该对象
Object.entries(obj)
如果参数的数据结构具有键和值,则返回一个二元数组,数组的每个元素为参数的[key,value]数组(区别在于for···in循环枚举原型链中的属性)
Object.fromEntries(iterable)
把键值对列表转换为一个对象。iterable:类似实现了可迭代协议Array或者Map或者其他对象的可迭代对象。返回一个包含提供的可迭代对象条目的对应属性的新对象
Object.freeze()
方法可以冻结一个对象,一个被冻结的对象再也不能被修改,冻结了一个对象则不能向这个对象添加新的属性,不能删除该对象以有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值,此外冻结一个对象后该对象的原型也不能被修改。返回和传入的参数相同的对象
Objection.is(value1,value2)
判断两个值是不是相同的值。两个参数是两个需要比较的值。返回一个布尔值表示是不是相同
valueOf()
返回指定对象的原始值,浅拷贝
Object.keys()
用于返回对象可枚举的属性和方法的名称
toString()
返回一个表示该对象的字符串
obj.hasOwnProperty('属性')
返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)
prototypeObj.isPrototypeOf()
用于测试一个对象是不是存在在另一个对象的原型链上
判断数据类型
typeof 123
判断基本数据类型,null和引用是object,NaN 是number
{} instanceof Object
判断引用数据类型返回布尔值
{}.constructor == Object
判断引用数据类型返回布尔值
Object.prototype.toString.call({})
返回 [object Object] 的字符串
深拷贝
let aaaobj = JSON.parse(JSON.stringify(obj))
其他
a-b随机数
function (min, max) {
return Math.floor(Math.random() * (max - min)) + min
}