目 录CONTENT

文章目录

JS数组方法大全:让你轻松掌握数组操作

萧瑟
2023-05-24 / 0 评论 / 0 点赞 / 403 阅读 / 3,920 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-07-03,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

image-1684921096488

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

  1. replace方法可以用来替换数组中的一个元素,它接受两个参数:要替换的元素和替换后的元素。
 let arr = ["apple", "banana", "cherry"],
 // 我们想要把"banana"替换成"orange"
 arr.replace(“banana”, “orange”);
 console.log(arr)		
 // ["apple", "orange", "cherry"]
  1. 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硬盘寿命受损,微软已发布修复补丁

3、不带手机也能付款!微信正式发布刷掌支付


weixin

0

评论区