1. 添加元素
-
push()
:在数组的末尾添加一个或多个元素,并返回新的长度。let arr = [1, 2, 3];
arr.push(4); // arr 现在是 [1, 2, 3, 4]
-
unshift()
:在数组的开头添加一个或多个元素,并返回新的长度。let arr = [1, 2, 3];
arr.unshift(0); // arr 现在是 [0, 1, 2, 3]
2. 删除元素
-
pop()
:删除数组的最后一个元素,并返回该元素。let arr = [1, 2, 3];
let last = arr.pop(); // last 是 3, arr 现在是 [1, 2]
-
shift()
:删除数组的第一个元素,并返回该元素。let arr = [1, 2, 3];
let first = arr.shift(); // first 是 1, arr 现在是 [2, 3]
-
splice()
:通过删除或替换现有元素或者原地添加新的元素来修改数组。let arr = [1, 2, 3, 4, 5];
arr.splice(2, 1); // 从索引 2 开始删除 1 个元素, arr 现在是 [1, 2, 4, 5]
arr.splice(1, 0, 'a', 'b'); // 在索引 1 处插入 'a' 和 'b', arr 现在是 [1, 'a', 'b', 2, 4, 5]
3. 合并和连接
concat()
:合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。let arr1 = [1, 2];
let arr2 = [3, 4];
let arr3 = arr1.concat(arr2); // arr3 是 [1, 2, 3, 4]
4. 查找元素
-
indexOf()
:返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回 -1。let arr = [1, 2, 3, 4];
let index = arr.indexOf(3); // index 是 2
-
lastIndexOf()
:返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1。let arr = [1, 2, 3, 2, 1];
let index = arr.lastIndexOf(2); // index 是 3
-
includes()
:判断一个数组是否包含一个指定的值,返回布尔值。let arr = [1, 2, 3];
let hasTwo = arr.includes(2); // hasTwo 是 true
-
find()
:返回数组中满足提供的测试函数的第一个元素的值。否则返回undefined
。let arr = [5, 12, 8, 130, 44];
let found = arr.find(element => element > 10); // found 是 12
-
findIndex()
:返回数组中满足提供的测试函数的第一个元素的索引。否则返回 -1。let arr = [5, 12, 8, 130, 44];
let foundIndex = arr.findIndex(element => element > 10); // foundIndex 是 1
5. 遍历和映射
-
forEach()
:对数组的每个元素执行一次提供的函数。let arr = [1, 2, 3];
arr.forEach(element => console.log(element)); // 输出 1, 2, 3
-
map()
:创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后的返回值。let arr = [1, 2, 3];
let newArr = arr.map(element => element * 2); // newArr 是 [2, 4, 6]
6. 过滤和归约
-
filter()
:创建一个新数组,其包含通过所提供函数实现的测试的所有元素。let arr = [1, 2, 3, 4];
let filteredArr = arr.filter(element => element > 2); // filteredArr 是 [3, 4]
-
reduce()
:对数组中的每个元素执行一个由您提供的 reducer 函数(升序执行),将其结果汇总为单个返回值。let arr = [1, 2, 3, 4];
let sum = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0); // sum 是 10
7. 其他
-
slice()
:返回一个新的数组对象,这一对象是一个由begin
和end
决定的原数组的浅拷贝(包括begin
,不包括end
)。let arr = [1, 2, 3, 4, 5];
let subArr = arr.slice(1, 4); // subArr 是 [2, 3, 4]
-
reverse()
:颠倒数组中元素的顺序。let arr = [1, 2, 3];
arr.reverse(); // arr 现在是 [3, 2, 1]
-
sort()
:对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列时构建的。let arr = [3, 1, 4, 1, 5];
arr.sort((a, b) => a - b); // arr 现在是 [1, 1, 3, 4, 5]
es6中的新方法:
1. Array.from()
- 功能:将类数组对象(如
arguments
、NodeList
)或可迭代对象(如Set
、Map
)转换为真正的数组。 - 示例:
const arrayLike = { 0: 'a', 1: 'b', 2: 'c', length: 3 };
const arr = Array.from(arrayLike); // ['a', 'b', 'c']
2. Array.of()
- 功能:创建一个新的数组实例,无论参数的数量或类型如何。
- 示例:
const arr = Array.of(1, 2, 3); // [1, 2, 3]
const singleElementArr = Array.of(5); // [5]
3. find()
- 功能:返回数组中第一个满足提供的测试函数的元素的值,否则返回
undefined
。 - 示例:
const arr = [1, 2, 3, 4];
const found = arr.find(x => x > 2); // 3
4. findIndex()
- 功能:返回数组中第一个满足提供的测试函数的元素的索引,否则返回
-1
。 - 示例:
const arr = [1, 2, 3, 4];
const index = arr.findIndex(x => x > 2); // 2
5. fill()
- 功能:用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。
- 示例:
const arr = [1, 2, 3, 4];
arr.fill(0, 1, 3); // [1, 0, 0, 4]
6. copyWithin()
- 功能:在数组内部,将指定位置的成员复制到其他位置,返回当前数组。
- 示例:
const arr = [1, 2, 3, 4];
arr.copyWithin(1, 2); // [1, 3, 4, 4]
7. entries()
- 功能:返回一个新的数组迭代器对象,该对象包含数组中每个索引的键/值对。
- 示例:
const arr = ['a', 'b', 'c'];
for (const [index, value] of arr.entries()) {
console.log(index, value);
}
// 输出:
// 0 'a'
// 1 'b'
// 2 'c'
8. keys()
- 功能:返回一个新的数组迭代器对象,该对象包含数组中每个索引的键。
- 示例:
const arr = ['a', 'b', 'c'];
for (const key of arr.keys()) {
console.log(key);
}
// 输出:
// 0
// 1
// 2
9. values()
- 功能:返回一个新的数组迭代器对象,该对象包含数组中每个索引的值。
- 示例:
const arr = ['a', 'b', 'c'];
for (const value of arr.values()) {
console.log(value);
}
// 输出:
// 'a'
// 'b'
// 'c'
10. includes()
- 功能:判断一个数组是否包含一个指定的值,返回布尔值。
- 示例:
const arr = [1, 2, 3, 4];
console.log(arr.includes(3)); // true
console.log(arr.includes(5)); // false
11. 扩展运算符(...
)
- 功能:用于展开数组或可迭代对象,可以用于数组的复制、合并等操作。
- 示例:
const arr1 = [1, 2];
const arr2 = [3, 4];
const combined = [...arr1, ...arr2]; // [1, 2, 3, 4]
12. flatMap()
- 功能:首先对数组中的每个元素调用一个映射函数,然后将结果“扁平化”成一个新数组(默认只扁平化一层)。
- 示例:
const arr = [1, 2, 3];
const result = arr.flatMap(x => [x, x * 2]); // [1, 2, 2, 4, 3, 6]
13. flat()
- 功能:按照指定的深度递归地将数组“扁平化”。
- 示例:
const arr = [1, [2, [3, [4]]]];
const flattened = arr.flat(2); // [1, 2, 3, [4]]