2022-04-27 JavaScript基础学习 - 4
第六章 集合引用类型
所有对象都有toString()
valueOf()
toLocaleString()
方法
Object
到目前为止,大多数引用值的示例使用的是Object类型。Object是 ECMAScript 中最常用的类型之一。
创建一个 object,有以下几种方式:
- 使用 new 和 Object 构造函数
- 字面量赋值
let obj = {}
Array
ECMAScript数组跟其他编程语言的数组有很大区别。跟其他语言中的数组一样,ECMAScript数组也是一组有序的数据,但跟其他语言不同 的是,数组中每个槽位可以存储任意类型的数据。这意味着可以创建一个数组,它的第一个元素是字符串,第二个元素是数值,第三个是对象。ECMAScript数组也是动态大小的,会随着数据添加而自动增长。
创建一个数组,有以下几种方式:
- 使用 new 和 Array 构造函数
- 字面量赋值
let arr = []
-
Array.from()
将类数组转为数组 -
Array.of()
将多个参数转为数组
Array.isArray()
判断该变量是否是数组
keys()
拿取数组索引的迭代器
console.log([1, 2, 3, 4].keys())
// [0, 1, 2, 3]
values()
拿取数组元素的迭代器
console.log([1, 2, 3, 4].values())
// [1, 2, 3, 4]
entries()
返回键值对的迭代器
console.log([1, 2, 3, 4].entries())
// [0, 1], [1, 2], [2, 3], [3, 4]
Array.fill()
填充数组,三个参数,分别是填充值、起始索引、结束索引,其中这三个参数都是可选值,顺序不可替换:
- 没有参数,默认以 undefined 填充整个数组
- 没有结束参数,默认以起始索引填充至数组尾部
- 都有,以起始索引至结束索引范围内填充值
Array.copyWithin()
是复制元素内部的参数修改指定索引位置内容,三个参数,分别是插入位置,复制起始位置,复制结束位置,其中这三个参数第一个参数必填:
- 1个参数,复制数组所有内容,从指定索引开始赋值
- 2个参数,复制从第二个参数开始到数组末尾的内容,从指定索引开始赋值
- 3个参数,复制第二个参数到第三个参数之间的内容,从指定索引开始赋值
pop()
方法,删除数组最后一个元素,修改数组长度,并且返回被删除的元素
push()
方法,从数组尾部插入1个不等的元素,并且返回数组最新的长度
shift()
同 pop()
,从删除第一项
unshift()
同 push()
,从数组头部插入元素
sort()
两个参数(a,b),如果a-b
为负数,升序;如果a-b
为正数,降序;如果a-b
为0,不变
reverse()
逆转数组顺序
concat()
拼接数组,返回拼接后的新数组,默认会将数组参数展平
slice()
截取数组
splice()
是slice()
的进阶版,可以实现删除,修改,添加。
indexOf()
查询该元素在数组内的下标,没有则返回-1
includes()
查询该元素是否存在数组内,没有则返回false
lastIndexOf()
同indexOf
,但是从数组尾部开始查询。
every()
对数组每项检查,如果都返回true,则返回true
filter()
对数组每项检查,将判断结果为true作为输出项,组成新数组
map()
对数组每项进行处理,将处理后的元素作为输出项,组成新数组
forEach()
遍历数组,forEach 没有返回项,但可以调用元素组,对原数组内容进行修改
some()
对数组每项检查,如果有一个满足条件,则方法终止,且返回true
reduce()
会迭代数组的所有项,并在此基础上构建一个最终返回值。
reduceRight()
同reduce()
,但从最后一项向前遍历
定型数组
定型数组的出现是为了解决:
因为JavaScript数组与原生数组之间不匹 配,所以出现了性能问题。图形驱动程序API通常不需要以 JavaScript 默认双精度浮点格式传递给它们的数值,而这恰恰是 JavaScript 数组在内存中的格式。
Float32Array实际上是一种“视图”,可以允许JavaScript运行时访问一块名为 ArrayBuffer 的预分配内存。ArrayBuffer 是所有定型数组及视图引用的基本单位。
DataView第一种允许你读写ArrayBuffer的视图是DataView。这个视图专为文件 I/O和网络I/O设计,其API支持对缓冲数据的高度控制,但相比于其他类型的视图性能也差一些。DataView对缓冲内容没有任何预设,也不能迭代。
定型数组有着和数组一样的方法