JavaScript 中的数组(Array)是一种非常强大的数据结构,它提供了许多内置的方法来操作数组元素。以下是一些常用的数组方法及其简要说明,结合示例代码进行说明:
1. push()
向数组的末尾添加一个或多个元素,并返回新的长度。
let arr = [1, 2, 3];
arr.push(4, 5);
console.log(arr); // [1, 2, 3, 4, 5]
2. pop()
从数组中删除最后一个元素,并返回该元素的值。此方法会改变原数组。
let arr = [1, 2, 3];
let lastElement = arr.pop();
console.log(arr); // [1, 2]
console.log(lastElement); // 3
3. shift()
删除并返回数组的第一个元素。此方法会改变原数组。
let arr = [1, 2, 3];
let firstElement = arr.shift();
console.log(arr); // [2, 3]
console.log(firstElement); // 1
4. unshift()
向数组的开头添加一个或多个元素,并返回新的长度。
let arr = [1, 2, 3];
arr.unshift(0);
console.log(arr); // [0, 1, 2, 3]
5. splice()
通过删除现有元素和/或添加新元素来更改一个数组的内容。
let arr = [1, 2, 3, 4, 5];
let removed = arr.splice(2, 2, 'a', 'b'); // 从索引2开始删除2个元素,并添加'a'和'b'
console.log(arr); // [1, 2, 'a', 'b', 5]
console.log(removed); // [3, 4]
6. slice()
返回一个新的数组对象,这一对象是一个由 begin
到 end
(不包括 end
)选择的数组的一部分浅拷贝。
let arr = [1, 2, 3, 4, 5];
let newArr = arr.slice(1, 4);
console.log(newArr); // [2, 3, 4]
7. concat()
用于合并两个或多个数组。此方法不会改变现有的数组,而是返回一个新数组。
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let arr3 = arr1.concat(arr2);
console.log(arr3); // [1, 2, 3, 4, 5, 6]
8. join()
把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
let arr = ['Hello', 'world', 'JavaScript'];
let str = arr.join(' ');
console.log(str); // "Hello world JavaScript"
9. indexOf()
返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
let arr = [2, 5, 9];
let index = arr.indexOf(5);
console.log(index); // 2
10. forEach()
对数组的每个元素执行一次提供的函数。
let arr = [1, 2, 3];
arr.forEach(function(element) {
console.log(element);
});
// 输出:
// 1
// 2
// 3
11. map()
map()
方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
let numbers = [1, 4, 9];
let roots = numbers.map(Math.sqrt);
console.log(roots); // [1, 2, 3]
// 或者使用箭头函数
let doubled = numbers.map(x => x * 2);
console.log(doubled); // [2, 8, 18]
12. filter()
filter()
方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
let numbers = [1, 2, 3, 4, 5, 6];
let even = numbers.filter(function(number) {
return number % 2 === 0;
});
console.log(even); // [2, 4, 6]
// 使用箭头函数
let odd = numbers.filter(number => number % 2 !== 0);
console.log(odd); // [1, 3, 5]
13. reduce()
reduce()
方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
let numbers = [1, 2, 3, 4];
let sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 10
// 也可以用于数组去重
let array = [1, 2, 2, 3, 4, 4, 5];
let uniqueArray = array.reduce((acc, current) => {
if (acc.indexOf(current) === -1) acc.push(current);
return acc;
}, []);
console.log(uniqueArray); // [1, 2, 3, 4, 5]
14. find()
find()
方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined
。
let array = [5, 12, 8, 130, 44];
let found = array.find(element => element > 10);
console.log(found); // 12
15. findIndex()
findIndex()
方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。
let array = [5, 12, 8, 130, 44];
let index = array.findIndex(element => element > 10);
console.log(index); // 1
16. some()
some()
方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是布尔值。
let array = [1, 2, 3, 4, 5];
let hasLargeNumbers = array.some(element => element > 10);
console.log(hasLargeNumbers); // false
let hasSmallNumbers = array.some(element => element < 6);
console.log(hasSmallNumbers); // true
17. every()
every()
方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回的是布尔值。
let array = [1, 2, 3, 4, 5];
let areAllEven = array.every(element => element % 2 === 0);
console.log(areAllEven); // false
let areAllPositive = array.every(element => element > 0);
console.log(areAllPositive); // true
18. includes()
includes()
方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true
,否则返回 false
。
let array = [1, 2, 3];
console.log(array.includes(2)); // true
console.log(array.includes(4)); // false
这些方法是JavaScript数组操作中非常常用的,能够帮助你高效地进行数组遍历、查找、过滤、映射和归约等操作。