本章内容集合引用类型(对象、数组与定型数组、Map、WeakMap、
Set以及WeakSet类型)
- Object
显式创建Object的实例方式有两种:
使用new操作符和object构造函数
let obj = new Object()
或者对象字面量表示法
let obj = {
name: 'haha',
age: 15
}
- Array
创建数组方式:
let arr = new Array()
let arr = []
ES6新增:Array.from()、Array.of()
console.log(Array.from("Matt")); // ["M", "a", "t", "t"]
console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]
数组空位:数组是可以有空位的
const options = [,,,,,]; // 创建包含 5 个元素的数组
console.log(options.length); // 5
console.log(options); // [,,,,,]
数组索引:数组是有顺序的,可按照下标找到对应的值,下标从0开始。
如何判断是不是数组:
1、Array.isArray(),返回true or false【ES5】
2、instanceof
3、Object.prototype.toString.call() === ‘[object Array]’
isArray 优于 instanceof;
不支持isArray【es5】 可用Object.prototype.toString.call() === '[object Array]'代替
迭代器方法:keys()、values()和entries()。
const a = ["foo", "bar", "baz", "qux"];
// 因为这些方法都返回迭代器,所以可以将它们的内容
// 通过 Array.from()直接转换为数组实例
const aKeys = Array.from(a.keys());
const aValues = Array.from(a.values());
const aEntries = Array.from(a.entries());
console.log(aKeys); // [0, 1, 2, 3]
console.log(aValues); // ["foo", "bar", "baz", "qux"]
console.log(aEntries); // [[0, "foo"], [1, "bar"], [2, "baz"], [3, "qux"]]
复制和填充方法
批量复制方法copyWithin(),以及填充数组方法fill()
-
转换方法
-
栈方法(后进先出)
shift()取第一项,pop()取最后一项 -
队列方法(先进先出)
- 排序方法
reverse()逆排序,sort()按照字符串形式排序 -
操作方法
concat()拼接数组
可用Symbol.isConcatSpreadable强制不打平数组
slice()拆分元素,返回新数组
splice(),最强大的数组方法,可实现删除、插入、替换
ECMAScript 提供了 3 个严格相等的搜索方法:indexOf()、lastIndexOf()和 includes()
断言函数:find()和findIndex(),返回搜索的元素和索引
迭代方法- every()
对数组每一项进行判断,若每项都符合返回true,反之返回false
- some() 对数组每一项进行判断,若有一项符合就返回true,反之返回false
- filter()
对每一项进行判断,数组形式返回符合条件的元素
- forEach() 遍历数组的每一项
- map() 遍历数组的每一项
- 归并方法
reduce()和reduceRight(),reduce()从第一项开始遍历合并完最后一项,reduceRight()从最后一项合并到第一项。
- every()
-
定型数组(另一种形式的ArrayBuffer视图)
- 合并、复制和修改
- concat() 合并数组
- pop() 取最后一项
- push() 末尾插入元素
- shift() 取第一项
- splice() 替换、修改
- unshift() 头部插入元素
- set() 、subarray() 快速向外或向内复制数据
- 合并、复制和修改
-
Map
可用set()添加键/值
可用get()、has()查询映射
-
WeakMap 弱映射
-
Set (ES6新增)很多方面类似“加强的Map"
同理拥有 WeakSet 弱集合
小结
- 有 3 种原始值:Boolean、Number 和 String。
- Object 类型是一个基础类型,所有引用类型都从它继承了基本的行为。
- Array 类型表示一组有序的值,并提供了操作和转换值的能力。
- Date 类型提供了关于日期和时间的信息,包括当前日期和时间以及计算。
- RegExp 类型是 ECMAScript 支持的正则表达式的接口,提供了大多数基本正则表达式以及一些高级正则表达式的能力。
- 定型数组包含一套不同的引用类型,用于管理数值在内存中的类型。
- 内置对象:Global 和 Math。浏览器将 Global 实现为 window 对象。所有全局
变量和函数都是 Global 对象的属性。Math 对象包含辅助完成复杂数学计算的属性和方法。 - ECMAScript 6 新增了一批引用类型:Map、WeakMap、Set 和 WeakSet。