js数组方法是一组内置的函数,可以对数组进行各种操作,比如添加、删除、排序、过滤、映射、归约等。这些方法可以让你更高效地处理数组数据,而不需要写很多循环或条件语句。下面我就来介绍一些我常用的js数组方法。
1. push和pop
这两个方法可以在数组的末尾添加或删除元素,返回值分别是添加或删除的元素。例如:
let arr = [1, 2, 3];
arr.push(4); // arr变为[1, 2, 3, 4],返回值为4
arr.pop(); // arr变为[1, 2, 3],返回值为4
2. shift和unshift
这两个方法可以在数组的开头添加或删除元素,返回值分别是添加或删除的元素。例如:
let arr = [1, 2, 3];
arr.unshift(0); // arr变为[0, 1, 2, 3],返回值为0
arr.shift(); // arr变为[1, 2, 3],返回值为0
3. splice
这个方法可以在数组中任意位置添加或删除任意个元素,返回值是一个包含被删除元素组成的新数组。它接受三个参数:起始索引、删除个数和要添加的元素。例如:
let arr = [1, 2, 3, 4];
arr.splice(1, 2); // arr变为[1, 4],返回值为[2, 3]
arr.splice(1, 0, 'a', 'b'); // arr变为[1, 'a', 'b', 4],返回值为[]
4. slice
这个方法可以从数组中截取一段元素,返回值是一个包含被截取元素的新数组。它接受两个参数:起始索引和结束索引(不包含)。例如:
let arr = [1, 2, 3, 4];
arr.slice(1, 3); // 返回值为[2, 3],arr不变
arr.slice(-2); // 返回值为[3, 4],arr不变
5. sort
这个方法可以对数组进行排序,返回值是排序后的原数组。它接受一个可选的比较函数作为参数,如果不提供比较函数,默认按照字符串顺序排序。例如:
let arr = [5, 2, 7, 9];
arr.sort(); // arr变为[2, 5, 7, 9],返回值也是[2, 5, 7, 9]
arr.sort((a, b) => b - a); // arr变为[9, 7, 5, 2],返回值也是[9, 7, 5, 2]
6. reverse
这个方法可以反转数组的顺序,返回值是反转后的原数组。例如:
let arr = [1, 2, 3];
arr.reverse(); // arr变为[3, 2 ,1],返回值也是[3 ,2 ,1]
7. concat
这个方法可以将多个数组合并成一个新数组,返回值是合并后的新数组。它接受任意个参数,每个参数可以是一个数组或一个单独的元素。例如:
let arr1 = [1 ,2 ,3];
let arr2 = [4 ,5 ,6];
let arr3 = arr1.concat(arr2); // arr3为[1 ,2 ,3 ,4 ,5 ,6],arr1和arr2不变
let arr4 = arr1.concat(7 ,8 ,9); // arr4为[1 ,2 ,3 ,7 ,8 ,9],arr1不变
8. join
这个方法可以将数组中的所有元素连接成一个字符串,返回值是连接后的字符串。它接受一个可选的分隔符作为参数,默认使用逗号作为分隔符。例如:
let arr = ['a' ,'b' ,'c'];
arr.join(); // 返回值为'a,b,c'
arr.join('-'); // 返回值为'a-b-c'
9. indexOf和lastIndexOf
这两个方法可以查找数组中某个元素第一次或最后一次出现的位置,返回值是该元素的索引或-1(如果不存在)。它们接受两个参数:要查找的元素和可选的起始索引。例如:
let arr = [1 ,2 ,3 ,4 ,5 ,4];
arr.indexOf(4); // 返回值为3
arr.indexOf(6); // 返回值为-1
arr.lastIndexOf(4); // 返回值为5
arr.lastIndexOf(4 ,3); // 返回值为3
10. includes
这个方法可以判断数组中是否包含某个元素,返回值是一个布尔值。它接受两个参数:要判断的元素和可选的起始索引。例如:
let arr = [1 ,2 ,3];
arr.includes(2); // 返回值为true
arr.includes(4); // 返回值为false
arr.includes(3 ,-1); // 返回值为true
11. find和findIndex
这两个方法可以查找数组中满足某个条件的第一个元素或其索引,返回值分别是该元素或其索引或undefined(如果不存在)。它们接受一个回调函数作为参数,该回调函数会对每个元素执行,并返回一个布尔值表示是否满足条件。例如:
let arr = [10 ,20 ,30];
arr.find(x => x >15); // 返回值为20
arr.find(x => x <10); // 返回值为undefined
arr.findIndex(x => x >15); // 返回值为1
arr.findIndex(x => x <10); // 返回值为-1
12. filter
这个方法可以过滤出数组中满足某个条件的所有元素,并组成一个新数组返回。它接受一个回调函数作为参数,该回调函数会对每个元素执行,并返回一个布尔值表示是否保留该元素。例如:
let arr = [10 ,20 ,30];
arr.filter(x => x >15); // 返回值为[20 ,30]
arr.filter(x => x <10); // 返回值为[]
13. map
这个方法可以对数组中的每个元素进行某种操作,并将操作后的结果组成一个新数组返回。它接受一个回调函数作为参数,该回调函数会对每个元素执行,并返回操作后的结果。例如:
let arr = [10 ,20 ,30];
arr.map(x => x *10); // 返回值为[100 ,200 ,300]
arr.map(x => x.toString()); // 返回值为['10' ,'20' ,'30']
14. forEach
这个方法可以对数组中的每个元素执行某种操作,并且没有任何返回值。它接受一个回调函数作为参数,该回调函数会对每个元素执行,并且不需要有任何返回结果。例如:
let arr = [10 ,20 ,30];
let sum =0;
arr.forEach(x => sum += x); // 没有任何返回值,但sum变成了60
console.log(sum);
15. reduce和reduceRight
reduce和reduceRight,它们可以对数组中的每个元素执行一个函数,然后返回一个累计的结果。
reduce方法接收两个参数:一个回调函数和一个初始值。回调函数也有四个参数:累计值、当前元素、当前索引和原数组。reduce方法会从数组的第一个元素开始,依次执行回调函数,并把上一次的返回值作为下一次的累计值,最后返回最终的累计值。
// 我们可以用reduce方法来计算数组中所有数字的和:
let arr = [1, 2, 3, 4, 5];
let sum = arr.reduce((acc, cur) => acc + cur, 0); // 0是初始值
console.log(sum); // 15
reduceRight方法和reduce方法类似,只是它是从数组的最后一个元素开始,向前遍历。例如,我们可以用reduceRight方法来反转一个字符串:
let str = "Hello";
let reversed = str.split("").reduceRight((acc, cur) => acc + cur, ""); // ""是初始值
console.log(reversed); // olleH
16、replace和replaceAll
- replace方法可以用来替换数组中的一个元素,它接受两个参数:要替换的元素和替换后的元素。
let arr = ["apple", "banana", "cherry"],
// 我们想要把"banana"替换成"orange"
arr.replace(“banana”, “orange”);
console.log(arr)
// ["apple", "orange", "cherry"]
- replaceAll方法可以用来替换数组中的所有匹配的元素,它也接受两个参数:要替换的元素和替换后的元素。
let arr = ["apple", "banana", "cherry", "banana"],
// 我们想要把所有的"banana"都替换成"orange"
arr.replaceAll("banana", "orange");
console.log(arr)
// ["apple", "orange", "cherry", "orange"]
往期精彩:
1、一文掌握JS数组中的reduce和reduceAll方法
2、win10更新翻车,SSD硬盘寿命受损,微软已发布修复补丁
评论区