JavaScript 中的数组操作函数非常丰富,提供了多种方法来创建、修改、遍历和操作数组。以下是一些常用的数组操作函数及其示例:
1. 添加和移除元素
- `push`:在数组末尾添加一个或多个元素,返回新长度。
- `pop`:移除并返回数组末尾的元素。
- `unshift`:在数组开头添加一个或多个元素,返回新长度。
- `shift`:移除并返回数组开头的元素。
- `splice`:添加/删除特定位置的元素。
let arr = [1, 2, 3];
// push
arr.push(4); // arr: [1, 2, 3, 4]
// pop
let last = arr.pop(); // last: 4, arr: [1, 2, 3]
// unshift
arr.unshift(0); // arr: [0, 1, 2, 3]
// shift
let first = arr.shift(); // first: 0, arr: [1, 2, 3]
// splice
arr.splice(1, 1, 'a', 'b'); // arr: [1, 'a', 'b', 3] 删除位置 1 元素(2个),并插入 'a', 'b'
2. 访问和查找元素
- `indexOf`:返回第一次出现的指定元素的索引,如果不存在则返回 -1。
- `lastIndexOf`:返回最后一次出现的指定元素的索引,如果不存在则返回 -1。
- `includes`:判断数组是否包含指定元素,返回布尔值。
- `find`:返回第一个通过测试的元素的值。
- `findIndex`:返回第一个通过测试的元素的索引,如果没有找到返回 -1。
let arr = [1, 2, 3, 4, 3];
// indexOf
console.log(arr.indexOf(3)); // 输出: 2
// lastIndexOf
console.log(arr.lastIndexOf(3)); // 输出: 4
// includes
console.log(arr.includes(2)); // 输出: true
// find
let found = arr.find(element => element > 2);
console.log(found); // 输出: 3
// findIndex
let index = arr.findIndex(element => element > 2);
console.log(index); // 输出: 2
3. 遍历数组
- `forEach`:对数组的每个元素执行指定的函数。
let arr = [1, 2, 3];
arr.forEach((element, index) => {
console.log(`Index: ${index}, Value: ${element}`);
});
4. 创建新数组
- `map`:对数组的每个元素执行指定的函数并返回新数组。
- `filter`:创建一个包含所有通过测试的元素的新数组。
- `concat`:合并多个数组并返回新数组。
- `slice`:返回一个新的数组,包含从开始到结束(不包括结束)的选定元素。
let arr = [1, 2, 3];
// map
let mappedArr = arr.map(x => x * 2); // [2, 4, 6]
// filter
let filteredArr = arr.filter(x => x > 1); // [2, 3]
// concat
let arr2 = [4, 5, 6];
let combined = arr.concat(arr2); // [1, 2, 3, 4, 5, 6]
// slice
let slicedArr = arr.slice(1, 3); // [2, 3]
5. 修改数组的顺序
- `reverse`:反转数组中的元素。
- `sort`:对数组元素进行排序,默认按字符串 Unicode 排序,可以通过比较函数定制排序。
let arr = [1, 2, 3];
// reverse
arr.reverse(); // [3, 2, 1]
// sort
let unsortedArr = [3, 1, 4, 1, 5];
unsortedArr.sort(); // 默认排序: [1, 1, 3, 4, 5]
unsortedArr.sort((a, b) => a - b); // 数值升序排序: [1, 1, 3, 4, 5]
6. 聚合和简化数组
- `reduce`:对数组的每个元素执行指定的 reducer 函数,最终计算为单个值。
- `reduceRight`:与 `reduce` 类似,但从右到左执行。
let arr = [1, 2, 3, 4];
// reduce
let sum = arr.reduce((acc, curr) => acc + curr, 0); // 10
// reduceRight
let reversedSum = arr.reduceRight((acc, curr) => acc + curr, 0); // 10
7. 其他常用方法
- `join`:将数组的所有元素连接成一个字符串。
- `flat`:将多维数组平铺成一维数组。
- `flatMap`:结合 `map` 和 `flat`,首先对每个元素执行映射函数,然后将结果压平成一个新数组。
- `Array.from`:从类数组或可迭代对象创建新的数组实例。
- `Array.isArray`:检查某个值是否为数组。
let arr = [1, 2, 3];
// join
let str = arr.join('-'); // "1-2-3"
// flat
let nestedArr = [1, [2, [3, 4]]];
let flatArr = nestedArr.flat(2); // [1, 2, 3, 4]
// flatMap
let mappedFlatArr = arr.flatMap(x => [x, x * 2]); // [1, 2, 2, 4, 3, 6]
// Array.from
let set = new Set([1, 2, 3]);
let arrayFromSet = Array.from(set); // [1, 2, 3]
// Array.isArray
console.log(Array.isArray(arr)); // true
这些函数使得JavaScript中的数组操作非常灵活和强大,可以满足各种数据处理需求。希望这些示例能帮助你更加了解和使用这些数组操作函数。