在 JavaScript 中,数组是一种非常重要的数据结构,广泛用于存储和操作一组数据。JavaScript 提供了许多内置的数组方法,这些方法可以帮助开发者高效地处理数组。以下是 JavaScript 中常用的数组方法总结及其作用:
### 1. `forEach()`
`forEach()` 方法用于对数组中的每个元素执行一次提供的函数。该方法不会返回任何值,并且不会改变原数组。
```javascript
var list = [32, 93, 77, 53, 38, 87];
var sum = 0;
list.forEach(function (item) {
console.log(item);
sum += item;
});
console.log(sum); // 输出数组元素的总和
```
### 2. `concat()`
`concat()` 方法用于合并两个或多个数组。该方法不会修改现有数组,而是返回一个新的数组作为合并后的结果。
```javascript
var arr = ["George", "John", "Thomas"];
var arr2 = ["James", "Adrew", "Martin"];
var arr3 = ["William", "Franklin"];
var combinedArr = arr.concat(arr2, arr3);
console.log(combinedArr); // ["George", "John", "Thomas", "James", "Adrew", "Martin", "William", "Franklin"]
```
### 3. `join()`
`join()` 方法用于将数组中的所有元素连接成一个字符串。可以指定一个分隔符作为参数,如果不提供,默认使用逗号 `,`。
```javascript
var arr = ["apple", "banana", "orange"];
var result = arr.join(" - ");
console.log(result); // "apple - banana - orange"
```
### 4. `reduce()` 和 `reduceRight()`
`reduce()` 方法用于对数组中的每个元素执行一个累加函数,最终将数组缩减为一个单一的值。`reduceRight()` 的作用类似,但处理顺序是从右到左。
```javascript
let arr = [1, 2, 3, 4];
let sum = arr.reduce((acc, item) => acc + item, 0);
console.log(sum); // 输出 10
let sumRight = arr.reduceRight((acc, item) => acc + item, 0);
console.log(sumRight); // 输出 10
```
### 5. `indexOf()`
`indexOf()` 方法用于查找数组中某个元素的索引值。如果找到该元素,则返回其索引;如果未找到,则返回 `-1`。
```javascript
let arr = ["apple", "banana", "orange"];
let index = arr.indexOf("banana");
console.log(index); // 输出 1
```
### 6. `map()`
`map()` 方法用于创建一个新数组,其结果是对原数组中的每个元素执行一次提供的函数。
```javascript
let arr = [1, 2, 3, 4];
let squared = arr.map(x => x * x);
console.log(squared); // [1, 4, 9, 16]
```
### 7. `filter()`
`filter()` 方法用于创建一个新数组,其中包含所有通过测试的元素。
```javascript
let arr = [10, 20, 30, 40, 50];
let filtered = arr.filter(x => x > 25);
console.log(filtered); // [30, 40, 50]
```
### 8. `find()` 和 `findIndex()`
`find()` 方法用于返回数组中满足提供的测试函数的第一个元素的值。如果没有找到符合条件的元素,则返回 `undefined`。`findIndex()` 则返回符合条件的元素的索引,如果没有找到,则返回 `-1`。
```javascript
let arr = [5, 10, 15, 20];
let found = arr.find(x => x > 12);
console.log(found); // 15
let index = arr.findIndex(x => x > 12);
console.log(index); // 2
```
### 9. `slice()`
`slice()` 方法用于返回数组的一部分,从起始索引开始,到结束索引(不包含结束索引)结束。该方法不会修改原数组。
```javascript
let arr = ["apple", "banana", "orange", "grape"];
let sliced = arr.slice(1, 3);
console.log(sliced); // ["banana", "orange"]
```
### 10. `splice()`
`splice()` 方法用于修改数组内容,可以删除或添加元素。该方法会直接修改原数组。
```javascript
let arr = ["apple", "banana", "orange"];
arr.splice(1, 1, "grape");
console.log(arr); // ["apple", "grape", "orange"]
```
### 11. `sort()`
`sort()` 方法用于对数组元素进行排序。默认情况下,排序是按照字符串的 Unicode 码点进行的。可以通过提供一个比较函数来实现自定义排序。
```javascript
let arr = [10, 5, 8, 12];
arr.sort((a, b) => a - b);
console.log(arr); // [5, 8, 10, 12]
```
### 12. `reverse()`
`reverse()` 方法用于反转数组元素的顺序。该方法会直接修改原数组。
```javascript
let arr = [1, 2, 3, 4];
arr.reverse();
console.log(arr); // [4, 3, 2, 1]
```
### 13. `includes()`
`includes()` 方法用于判断数组是否包含某个特定的元素。如果包含,则返回 `true`;否则返回 `false`。
```javascript
let arr = ["apple", "banana", "orange"];
console.log(arr.includes("banana")); // true
```
### 14. `some()` 和 `every()`
`some()` 方法用于测试数组中是否有至少一个元素满足提供的测试函数。如果有,则返回 `true`;否则返回 `false`。`every()` 方法用于测试数组中所有元素是否都满足提供的测试函数。如果全部满足,则返回 `true`;否则返回 `false`。
```javascript
let arr = [5, 10, 15, 20];
console.log(arr.some(x => x > 12)); // true
console.log(arr.every(x => x > 3)); // true
```
### 15. `push()` 和 `pop()`
`push()` 方法用于向数组末尾添加一个或多个元素,并返回新的长度。`pop()` 方法用于删除数组的最后一个元素,并返回该元素。
```javascript
let arr = ["apple", "banana"];
arr.push("orange");
console.log(arr); // ["apple", "banana", "orange"]
let last = arr.pop();
console.log(last); // "orange"
console.log(arr); // ["apple", "banana"]
```
### 16. `shift()` 和 `unshift()`
`shift()` 方法用于删除数组的第一个元素,并返回该元素。`unshift()` 方法用于向数组开头添加一个或多个元素,并返回新的长度。
```javascript
let arr = ["apple", "banana", "orange"];
let first = arr.shift();
console.log(first); // "apple"
console.log(arr); // ["banana", "orange"]
arr.unshift("grape", "apple");
console.log(arr); // ["grape", "apple", "banana", "orange"]
```
### 17. `fill()`
`fill()` 方法用于将数组中的所有元素替换为指定的值。
```javascript
let arr = [1, 2, 3, 4];
arr.fill(0);
console.log(arr); // [0, 0, 0, 0]
```
### 18. `copyWithin()`
`copyWithin()` 方法用于将数组中的一部分复制到数组中的另一个位置,并返回修改后的数组。
```javascript
let arr = [1, 2, 3, 4, 5];
arr.copyWithin(0, 3);
console.log(arr); // [4, 5, 3, 4, 5]
```
### 19. `flat()` 和 `flatMap()`
`flat()` 方法用于将多维数组“拉平”,变成一维数组。`flatMap()` 方法首先对数组中的每个元素应用一个映射函数,然后将结果“拉平”。
```javascript
let arr = [1, [2, [3, 4], 5]];
console.log(arr.flat()); // [1, 2, 3, 4, 5]
let result = arr.flatMap(x => (Array.isArray(x) ? x : [x * 2]));
console.log(result); // [2, 2, 3, 4, 10]
```
### 20. `entries()`, `keys()`, 和 `values()`
这些方法用于遍历数组。`entries()` 返回一个包含数组键值对的迭代器,`keys()` 返回一个包含数组索引的迭代器,`values()` 返回一个包含数组元素的迭代器。
```javascript
let arr = ["apple", "banana", "orange"];
let iterator = arr.entries();
console.log(iterator.next().value); // [0, "apple"]
console.log(iterator.next().value); // [1, "banana"]
console.log(iterator.next().value); // [2, "orange"]
```
---