一、Array对象方法
方法 | 参数 | 返回值 | 描述 |
---|---|---|---|
以下Api会修改原属组 | |||
push | item1, item2, ... | 数组新长度 | 向数组的末尾添加一个或多个元素,并返回新的长度 |
pop | 删除的元素 | 删除数组的最后一个元素,并返回删除的元素 | |
unshift | item1,item2, ... | 数组新长度 | 向数组的开头添加一个或更多元素,并返回新的长度 |
shift | 删除的元素 | 删除数组第一个元素,并返回删除的元素 | |
sort | (a,b)=> a-b | 对数组的引用 | 对数组的元素进行排序 |
reverse | 颠倒顺序后的数组 | 反转数组顺序 | |
splice | index,number,item1, item2,... | 删除元素组成的数组或[] | 用于删除、添加、替换数组中的元素 |
fill | item,start,end | 将一个固定值替换数组的元素 | |
以下Api不会修改原数组 | |||
of | item1, item2, ... | 新的数组 | 将一组值转换为数组,不考虑参数的数量或类型 |
at | number | 指定位置的元素或者undefined | 获取指定位置的数组元素 |
flat | number或者Infinity | 新的数组 | 数组扁平化 |
tostring | string | 把数组转换为字符串元素之间用逗号分隔 | |
join | 分隔符 | string | 数组分割成字符串 |
concat | array1,array2,... | 新的数组 | 连接两个或多个数组 |
slice | start,end | 新的数组 | 1.从已有的数组中返回选定的元素; 2.提取指定位置字符串,并返回新的字符串; |
includes | item,start | true或者false | 是否包含一个指定的值 |
indexOf | item,start | 索引或者-1 | 查找数组中符合条件的元素第一次出现的位置 |
lastIndexOf | item,start | 索引或者-1 | 查找数组中符合条件的元素最后一次出现的位置 |
some | (item,index,arr)=>boolean,thisValue | true或者false | 执行回调函数,数组中是否存在符合条件的元素 |
every | (item,index,arr)=>boolean,thisValue | true或者false | 执行回调函数,数组中是否所有元素都符合条件 |
findIndex | (item,index,arr)=>boolean,thisValue | 符合条件元素的索引或者-1 | 执行回调函数,查找第一个元素符合条件元素的索引 |
find | (item,index,arr)=>boolean,thisValue | 符合条件的元素或者undefined | 执行回调函数,查找第一个元素符合条件元素的值 |
forEach | (item, index, arr)=>void,thisValue | 执行回调函数 | |
map | (item, index, arr)=>any,thisValue | 处理后的数组 | 执行回调函数,按照原始数组元素顺序依次处理元素,并返回一个新数组 |
flatMap | (item, index, arr)=>any,thisValue | 新的数组 | 使用映射函数映射每个元素,然后将结果压缩成一个新数组 |
filter | (item, index, arr)=>boolean,thisValue | 符合条件元素组成的新数组 | 过滤数组 |
reduce | (total,item, index, arr)=>totals,initialValue | 返回计算结果 | 累加器 |
reduceRight | (total,item, index, arr)=>totals,initialValue | 返回计算结果 | 反向累加器 |
Array.form() | arr | arr | 伪数组转真数组 |
Array.prototype.silce.call() | arr | arr | 伪数组转真数组 |
二、Object对象方法
方法 | 参数 | 返回值 | 描述 |
---|---|---|---|
Object.keys() | Array | 获取对象所有的键(key)组成的数组 | |
Object.values() | Array | 获取对象所有的值(value)组成的数组 | |
Object.entries() | Array | 对象转化成数组 [[key,value],[key,value],...] | |
Object.freeze() | 冻结对象:其他代码不能删除或更改任何属性。 | ||
Object.isFrozen() | boolean | 判断对象是否已经冻结。 | |
Object.assign() | object,object,... | object | 合并一个或多个对象或者复制对象的值 |
Object.hasOwnProperty() | key | boolean | 判断对象中是否存在指定的属性(等同 key in obj) |
Object.defineProperty() | obj,key,value | 给对象添加一个属性并指定该属性的配置。 | |
Object.defineProperties() | obj,{key:value,key:value,...} | 给对象添加多个属性并分别指定它们的配置。 |
三、String对象方法
方法 | 参数 | 返回值 | 描述 |
---|---|---|---|
charAt() | index | string | 返回指定位置的字符。 |
indexOf() | string | index || -1 | 返回字符串首次出现的位置。 |
lastIndexOf() | string | index || -1 | 返回字符串最后一次出现的位置。 |
includes() | string | boolean | 查找字符串中是否包含指定的子字符串。 |
startsWith() | string | boolean | 查看字符串是否以指定的子字符串开头。 |
endsWith() | string | boolean | 判断当前字符串是否是以指定的子字符串结尾的(区分大小写) |
search() | string || regexp | index || -1 | 查找与正则表达式相匹配的值。 |
match() | string || regexp | string[] | 查找找到一个或多个正则表达式的匹配。 |
replace() | oldValue,newValue | string | 在字符串中查找匹配的子串,并替换与正则表达式匹配的子串。 |
replaceAll() | oldValue,newValue | string | 在字符串中查找匹配的子串,并替换与正则表达式匹配的所有子串。 |
slice() | startindex,endindex | string | 提取字符串的片断,并在新的字符串中返回被提取的部分。 |
substr() | startIndex,num | string | 从起始索引号提取字符串中指定数目的字符,且不会改变源字符串。 |
substring() | startindex,endindex | string | 提取字符串中两个指定的索引号之间的字符。 |
split() | string || regexp | string[] | 把字符串分割为字符串数组。 |
concat() | string, string, ... | string | 用于连接两个或多个字符串。 |
repeat() | num | string | 复制字符串指定次数,并将它们连接在一起返回。 |
trim() | 去除字符串两边的空白。 | ||
toLowerCase() | 把字符串转换为小写。 | ||
toUpperCase() | 把字符串转换为大写。 |
四、Number对象方法
方法 | 参数 | 返回值 | 描述 |
---|---|---|---|
isFinite | value | boolean | 检测参数是否为无穷大 如果 value 非数字,则返回 false。 |
isInteger | value | boolean | 检测指定参数是否为整数。 |
isNaN | value | boolean | 检测指定参数是否为 NaN。 |
toPrecision() | num | number | 把数字格式化为指定的长度 |
toFixed() | num | string | 把数字转换为字符串,结果的小数点后有指定位数的数字 |
五、Math对象方法
方法 | 参数 | 描述 |
---|---|---|
max | value,value,... | 最大值 |
min | value,value,... | 最小值 |
abs | value | 绝对值 |
PI | 圆周率 | |
sqrt | value | 平方根 |
pow | xValue,yValue | x的y次幂 |
round | value | 四舍五入 |
cell | value | 向上取整 |
floor | value | 向下取整 |
trunc | value | 将小数部分去掉,保留整数部分 |
random | 返回介于 0(包含) ~ 1(不包含) 之间的一个随机数; 公式:Math.foolt(Math.random()*(max-min+1))+min; |
六. symbol
背景:ES5的对象属性名都是字符串,这容易造成属性名冲突的问题;
特征:
- 独一无二性:每个 Symbol 值都是唯一的,无法通过简单的值比较相等。
- 不可变性:Symbol 值一旦创建,就不能被修改。
- 作为属性键:Symbol 可以作为对象的属性键,用于创建对象的私有属性或隐藏属性,以避免命名冲突。
- 隐藏性:使用 Symbol 作为属性键,这些属性对于常规的对象遍历和操作是不可见的。
实例:{ [Symbol('foo')]: 'foo val', [Symbol('bar')]: 'bar val' }
Symbol() | Symbol('foo')==Symbol('foo') // false |
let s = Symbol('foo'); console.log(Symbol.keyFor(s)); // symbol(foo) | |
Symbol.for() | 全局符号注册表 Symbol.for('foo')==Symbol.for('foo') // true |
Symbol.keyFor() | 查询全局注册表 let s = Symbol.for('foo'); console.log(Symbol.keyFor(s)); // foo |
Object.keys() | 获取对象内部的key组成的数组(不包含symbol) |
Object.getOwnPropertySymbols(info) | 获取对象内部的symbol命名的key组成的数组(只包含symbol) |
Reflect.ownKeys() | 获取对象内部的symbol命名的key组成的数组(全部) |
七. biglnt
背景
js中number类型只能安全的表示-9007199254740991(-(2^53-1))和9007199254740991((2^53-1)) 任何超出此范围的整数值都可能失去精度,就会出现精度失真,无法确保数值的稳定性和计算结果的正确性。
作用
BigInt是一种新的数据类型,用于当整数值大于Number数据类型支持的范围时。这种数据类型允许我们安全地对大整数执行算术操作
使用BigInt
1. 要创建BigInt,只需要在数字末尾追加n即可。
console.log( 9007199254740995n ); // → 9007199254740995n
console.log( 9007199254740995 ); // → 9007199254740996
2.创建BigInt的方法是用BigInt()构造函数。
BigInt("9007199254740995"); // → 9007199254740995n
注意
- BigInt不支持一元加号运算符 例如:+10
- Bigint不支持和 Number 之间进行混合操作 例如:10+10n
八. null和undefined的区别
- null。表示一个空的对象指针,通常用于表示一个变量不包含任何对象。在JavaScript中,null被视为一个空值或缺少值的对象指针,它是一个被明确赋予的值,用来表示没有有效的对象引用。
- undefined。表示一个未初始化(未定义)的值,通常用于表示尚未赋值的变量。在JavaScript中,undefined是一个全局变量,在没有被赋值的情况下,默认的初始值就是undefined。当你尝试使用一个未初始化的变量时,JavaScript引擎会返回undefined。转化为数值是NAN。
- null==undefined //true
- null===undfined //false
- Number(null) //0
- Number(undfined) //NAN
九.检测数据类型的方法
- typeof:基本类型检测;
- instanceof:判断a是否是b的实例;
- Object.prototype.toString.call() :使用call把Object对象的toString方法指向value,获取value的原生构造函数名;
- constructor:属性可能会被改写,导致检测结果不准确;
- isNaN:检测
- Array.isArray():检测是否是数组
- isFinite:检测是否为数值