JavaScript 中数组的方法可以分为多种类型,以下为大家详细介绍:
1. 修改原数组的方法
添加元素
push()
:接收任意数量的参数,将它们逐个添加到数组末尾,并返回修改后数组的长度。
let arr = [1, 2, 3];
let newLength = arr.push(4, 5);
console.log(newLength); // 5
console.log(arr); // [1, 2, 3, 4, 5]
unshift()
:将参数添加到原数组开头,并返回数组的新长度。
let arr = [1, 2, 3];
let newLength = arr.unshift(0);
console.log(newLength); // 4
console.log(arr); // [0, 1, 2, 3]
删除元素
pop()
:删除数组末尾的最后一项,减少数组的length
值,然后返回移除的项。
let arr = [1, 2, 3];
let lastItem = arr.pop();
console.log(lastItem); // 3
console.log(arr); // [1, 2]
shift()
:删除原数组的第一项,并返回删除元素的值;如果数组为空则返回undefined
。
let arr = [1, 2, 3];
let firstItem = arr.shift();
console.log(firstItem); // 1
console.log(arr); // [2, 3]
替换或插入元素
splice()
:可以删除、替换或添加数组中的元素,能指定起始位置和删除的元素数量。
let arr = [1, 2, 3, 4];
// 删除一个元素
arr.splice(2, 1);
console.log(arr); // [1, 2, 4]
// 替换元素
arr.splice(1, 1, 5);
console.log(arr); // [1, 5, 4]
// 添加元素
arr.splice(1, 0, 6);
console.log(arr); // [1, 6, 5, 4]
反转数组
reverse()
:将数组中元素的位置颠倒,并返回该数组,会改变原数组。
let arr = [1, 2, 3];
arr.reverse();
console.log(arr); // [3, 2, 1]
排序数组
sort()
:按升序排列数组项,若要对数字进行排序,需要传入比较函数。
let arr = [3, 1, 2];
arr.sort((a, b) => a - b);
console.log(arr); // [1, 2, 3]
2. 不修改原数组的方法
连接数组
concat()
:合并两个或多个数组,返回一个新数组。
let arr1 = [1, 2];
let arr2 = [3, 4];
let newArr = arr1.concat(arr2);
console.log(newArr); // [1, 2, 3, 4]
提取元素
slice()
:从数组中返回指定开始和结束位置之间的元素,不修改原数组。
let arr = [1, 2, 3, 4];
let slicedArr = arr.slice(1, 3);
console.log(slicedArr); // [2, 3]
3. 查找元素的方法
indexOf()
:查找元素第一次出现的位置,返回索引,如果没有找到则返回 -1。
let arr = [1, 2, 3, 2];
let index = arr.indexOf(2);
console.log(index); // 1
lastIndexOf()
:查找元素最后一次出现的位置,返回索引,如果没有找到则返回 -1。
let arr = [1, 2, 3, 2];
let lastIndex = arr.lastIndexOf(2);
console.log(lastIndex); // 3
includes()
:判断数组是否包含某个元素,返回true
或false
。
let arr = [1, 2, 3];
let hasTwo = arr.includes(2);
console.log(hasTwo); // true
4. 遍历数组的方法
forEach()
:对数组中的每个元素执行一次提供的函数,不改变原数组。
let arr = [1, 2, 3];
arr.forEach((item) => {
console.log(item);
});
5. 转换数组的方法
map()
:创建一个新数组,数组中的元素是原数组元素调用回调函数后的结果。
let arr = [1, 2, 3];
let doubled = arr.map(x => x * 2);
console.log(doubled); // [2, 4, 6]
6. 过滤数组的方法
filter()
:创建一个新数组,包含通过回调函数测试为true
的所有元素。
let arr = [1, 2, 3, 4];
let even = arr.filter(x => x % 2 === 0);
console.log(even); // [2, 4]
7. 归约方法
reduce()
:对数组中的元素执行累加操作,返回单一的结果。
let arr = [1, 2, 3, 4];
let sum = arr.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 10
reduceRight()
:与reduce()
类似,但从数组的末尾开始执行。
let arr = [1, 2, 3, 4];
let sum = arr.reduceRight((acc, curr) => acc + curr, 0);
console.log(sum); // 10
8. 其他方法
fill()
:用一个固定值填充一个数组中从起始索引到终止索引内的全部元素,不包括终止索引。
let arr = [1, 2, 3, 4];
arr.fill(0, 1, 3);
console.log(arr); // [1, 0, 0, 4]
find()
:返回数组中满足提供的测试函数的第一个元素的值。
let arr = [1, 2, 3, 4];
let found = arr.find(x => x > 2);
console.log(found); // 3
findIndex()
:返回数组中满足提供的测试函数的第一个元素的索引,如果不存在,则返回 -1。
let arr = [1, 2, 3, 4];
let index = arr.findIndex(x => x > 2);
console.log(index); // 2