JavaScript数组常用方法及其使用场景

在前端开发中,数组(Array)是JavaScript中最常用的数据结构之一。掌握数组的常用方法对于高效处理数据至关重要。以下是一些常用的数组方法及其使用场景:
1. push()
和 pop()
push()
: 向数组的末尾添加一个或多个元素,并返回新的长度。let arr = [1, 2, 3]; arr.push(4); // arr 现在是 [1, 2, 3, 4]
pop()
: 移除数组的最后一个元素,并返回该元素。let lastElement = arr.pop(); // lastElement 是 4, arr 现在是 [1, 2, 3]
2. shift()
和 unshift()
shift()
: 移除数组的第一个元素,并返回该元素。let firstElement = arr.shift(); // firstElement 是 1, arr 现在是 [2, 3]
unshift()
: 向数组的开头添加一个或多个元素,并返回新的长度。arr.unshift(0); // arr 现在是 [0, 2, 3]
3. concat()
concat()
: 用于合并两个或多个数组,返回一个新数组。let arr1 = [1, 2]; let arr2 = [3, 4]; let newArr = arr1.concat(arr2); // newArr 是 [1, 2, 3, 4]
4. slice()
slice()
: 返回数组的一个浅拷贝,从开始到结束(不包括结束)的部分。let arr = [1, 2, 3, 4, 5]; let slicedArr = arr.slice(1, 3); // slicedArr 是 [2, 3]
5. splice()
splice()
: 通过删除或替换现有元素或者添加新元素来修改数组,并返回被删除的元素。let arr = [1, 2, 3, 4, 5]; arr.splice(2, 1, 'a', 'b'); // arr 现在是 [1, 2, 'a', 'b', 4, 5]
6. map()
map()
: 创建一个新数组,其结果是该数组中的每个元素调用一次提供的函数后的返回值。let arr = [1, 2, 3]; let doubled = arr.map(x => x * 2); // doubled 是 [2, 4, 6]
7. filter()
filter()
: 创建一个新数组,包含通过所提供函数实现的测试的所有元素。let arr = [1, 2, 3, 4, 5]; let evens = arr.filter(x => x % 2 === 0); // evens 是 [2, 4]
8. reduce()
reduce()
: 对数组中的每个元素执行一个由您提供的 reducer 函数,将其结果汇总为单个返回值。let arr = [1, 2, 3, 4]; let sum = arr.reduce((acc, curr) => acc + curr, 0); // sum 是 10
9. forEach()
forEach()
: 对数组的每个元素执行一次提供的函数。let arr = [1, 2, 3]; arr.forEach(x => console.log(x)); // 依次输出 1, 2, 3
10. find()
和 findIndex()
find()
: 返回数组中满足提供的测试函数的第一个元素的值。如果没有找到,返回undefined
。let arr = [1, 2, 3, 4]; let found = arr.find(x => x > 2); // found 是 3
findIndex()
: 返回数组中满足提供的测试函数的第一个元素的索引。如果没有找到,返回-1
。let index = arr.findIndex(x => x > 2); // index 是 2
11. some()
和 every()
some()
: 测试数组中是否至少有一个元素通过了提供的测试函数。let arr = [1, 2, 3, 4]; let hasEven = arr.some(x => x % 2 === 0); // hasEven 是 true
every()
: 测试数组中的所有元素是否都通过了提供的测试函数。let allEven = arr.every(x => x % 2 === 0); // allEven 是 false
12. includes()
includes()
: 判断数组是否包含某个值,返回true
或false
。let arr = [1, 2, 3]; let hasTwo = arr.includes(2); // hasTwo 是 true
13. flat()
和 flatMap()
flat()
: 将嵌套的数组“拉平”,返回一个新数组。let arr = [1, [2, [3, [4]]]]; let flattened = arr.flat(2); // flattened 是 [1, 2, 3, [4]]
flatMap()
: 首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。let arr = [1, 2, 3]; let result = arr.flatMap(x => [x, x * 2]); // result 是 [1, 2, 2, 4, 3, 6]
14. sort()
sort()
: 对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点。let arr = [3, 1, 4, 1, 5, 9]; arr.sort((a, b) => a - b); // arr 现在是 [1, 1, 3, 4, 5, 9]
15. reverse()
reverse()
: 将数组中的元素位置颠倒,并返回该数组。let arr = [1, 2, 3]; arr.reverse(); // arr 现在是 [3, 2, 1]
16. join()
join()
: 将数组中的所有元素连接成一个字符串。let arr = [1, 2, 3]; let str = arr.join('-'); // str 是 "1-2-3"
17. indexOf()
和 lastIndexOf()
indexOf()
: 返回数组中第一个与指定值相等的元素的索引,如果找不到则返回-1
。let arr = [1, 2, 3, 2]; let index = arr.indexOf(2); // index 是 1
lastIndexOf()
: 返回数组中最后一个与指定值相等的元素的索引,如果找不到则返回-1
。let lastIndex = arr.lastIndexOf(2); // lastIndex 是 3
18. Array.isArray()
Array.isArray()
: 判断一个值是否为数组。let arr = [1, 2, 3]; let isArr = Array.isArray(arr); // isArr 是 true
19. fill()
fill()
: 用一个固定值填充数组中从起始索引到终止索引内的全部元素。let arr = [1, 2, 3, 4]; arr.fill(0, 1, 3); // arr 现在是 [1, 0, 0, 4]
20. copyWithin()
copyWithin()
: 浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。let arr = [1, 2, 3, 4, 5]; arr.copyWithin(0, 3); // arr 现在是 [4, 5, 3, 4, 5]
21. entries()
, keys()
, 和 values()
entries()
: 返回