1. 数组创建
- Array.of(...): 创建一个新的数组实例,其中包含传入的所有元素。
点击查看代码
console.log(Array.of(1, 2, 3)); // [1, 2, 3]
console.log(Array.of(7)); // [7]
console.log(Array.of()); // []
- Array.from(arrayLike, mapFn, thisArg): 从类数组或可迭代对象创建一个新的数组实例。
示例:
从类数组对象创建数组
点击查看代码
const arrayLike = {
0: 'a',
1: 'b',
2: 'c',
length: 3
};
const arr = Array.from(arrayLike);
console.log(arr); // ['a', 'b', 'c']
从可迭代对象创建数组
点击查看代码
const str = 'hello';
const arr = Array.from(str);
console.log(arr); // ['h', 'e', 'l', 'l', 'o']
使用映射函数
点击查看代码
const numbers = [1, 2, 3, 4];
const doubled = Array.from(numbers, x => x * 2);
console.log(doubled); // [2, 4, 6, 8]
2. 访问和修改
- length: 返回或设置数组的长度。
读取长度
** 设置长度:设置 length 属性会改变数组的大小:**
-
at(index): 返回数组中指定位置的元素,负数表示从数组末尾倒数的位置,index是下标索引值。
-
示例
3. 添加和删除元素
-
push(...elements): 向数组末尾添加一个或多个元素。
-
pop(): 移除并返回数组末尾的元素。
-
unshift(...elements): 向数组开头添加一个或多个元素。
-
shift(): 移除并返回数组开头的元素。
-
splice(start, deleteCount, ...items): 从数组中添加或删除元素。
-
使用 delete 操作符,删除数组中的指定元素,但不会改变数组的长度。
4. 查找元素
- indexOf(element, fromIndex): 返回数组中首次出现的指定元素的索引,未找到则返回 -1。
- lastIndexOf(element, fromIndex): 返回数组中最后一次出现的指定元素的索引,未找到则返回 -1。
- find(callback, thisArg): 返回数组中第一个符合条件的元素,找不到则返回 undefined。
- findIndex(callback, thisArg): 返回数组中第一个符合条件的元素的索引,找不到则返回 -1。
- includes(element, fromIndex): 判断数组是否包含指定元素,返回布尔值。
- some(callback, thisArg): 判断数组中是否至少有一个元素符合条件,返回布尔值。
- every(callback, thisArg): 判断数组中是否所有元素都符合条件,返回布尔值。
5. 遍历数组
- forEach(callback, thisArg): 对数组的每个元素执行一次回调函数。
- map(callback, thisArg): 返回一个新数组,其中每个元素是回调函数的结果。
- filter(callback, thisArg): 返回一个新数组,其中包含所有通过测试的元素。
- reduce(callback, initialValue): 对数组的每个元素执行回调函数,返回单一值。
- reduceRight(callback, initialValue): 从数组的末尾开始对每个元素执行回调函数,返回单一值。
- flat(depth): 将多维数组“拍平”,可以指定拍平的深度。
- flatMap(callback, thisArg): 对每个元素应用回调函数,然后将结果“拍平”至一维数组。
6. 变换数组
- concat(...arrays): 合并两个或多个数组。
- slice(begin, end): 返回数组的一个片段(浅拷贝),包含 begin 索引到 end 索引(不包括 end 索引)的元素。
- join(separator): 将数组的所有元素连接成一个字符串。
- sort(compareFunction): 对数组进行排序,可以指定排序函数。
- reverse(): 颠倒数组中元素的顺序。
7. 其他
- copyWithin(target, start, end): 将数组的指定部分复制到另一个位置。
- fill(value, start, end): 用指定的值填充数组的部分或全部元素。
- from(iterable, mapFn, thisArg): 从类数组或可迭代对象创建数组,可以应用映射函数。
- toString(): 将数组转换为字符串。
- toLocaleString(): 将数组转换为本地化的字符串。
8. ES2022+ 方法
- at(index): 返回数组中指定位置的元素,可以使用负数索引。
- groupBy(callback): 将数组中的元素按回调函数的返回值分组(需要 polyfill)。
- groupByToMap(callback): 与 groupBy 类似,但返回的是 Map(需要 polyfill)。