JavaScript数组操作方法全录 sort | filter | map | reduce


改变原数组的方法:

push() - 将一个或多个元素添加到数组的末尾,并返回新数组的长度。
pop() - 从数组中移除最后一个元素,并返回该元素。
shift() - 从数组中移除第一个元素,并返回该元素。
unshift() - 将一个或多个元素添加到数组的开头,并返回新数组的长度。
splice() - 在指定的索引位置添加或移除元素,并返回被移除的元素。
reverse() - 反转数组中元素的顺序。
sort() - 对数组元素进行排序。

不改变原数组的方法:

concat() - 将两个或多个数组合并为一个新数组。
slice() - 返回数组的一个子集作为新数组。
join() - 将数组中所有元素连接成一个字符串。
indexOf() - 返回指定值在数组中的第一个匹配项的索引。
lastIndexOf() - 返回指定值在数组中的最后一个匹配项的索引。
includes() - 返回一个布尔值,指示数组是否包含指定的值。
filter() - 使用指定函数测试所有元素,并创建一个包含所有通过测试的元素的新数组。
map() - 对数组中的每个元素调用指定函数,并返回一个新数组。
reduce() - 对数组中的每个元素执行一个指定的函数,并将其结果汇总为单个值。

需要注意的是,对数组进行浅拷贝和深拷贝也是很重要的概念。浅拷贝会创建一个新的数组,但与原始数组共享相同的引用。而深拷贝则会创建一个完全新的数组,对新数组的修改不会影响原始数组。

常用疑难方法解析

1. sort

修改原数组,对数组元素进行排序。sort 方法默认将数组元素视为字符串并按照 Unicode 顺序进行排序。

注意:sort 方法采用的排序算法可以根据不同的 JavaScript引擎而有所不同。一般来说,常见的排序算法包括快速排序(quicksort)、归并排序(mergesort)等。具体到不同的JavaScript 引擎,比如 Chrome 的 V8 引擎在某些版本中使用的是快速排序(quicksort),而在某些版本中可能会使用 TimSort 等算法。Mozilla 的 Firefox 使用的是归并排序(mergesort)

array.sort(function compareFunction(a, b) {
    // 返回值 < 0: 表示 a 在 b 前面
    // 返回值 = 0: 表示 a 和 b 位置不变
    // 返回值 > 0: 表示 a 在 b 后面
});

const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // 升序排序
numbers.sort((a, b) => b - a); // 降序排序

compareFunction:可选参数,用于指定排序顺序的比较函数,其中入参a, b分别代码数组中的两个元素。如果不提供比较函数,元素将按照 Unicode 顺序进行排序

2. reduce

对数组中的每个元素执行一个指定的函数,并将其结果汇总为单个值
应用:实现各种累积操作,如求和、计数、查找最大/最小值、累加、累乘、字符串拼接等。

array.reduce(function(sum, v, index, array), initialValue);
// 示例
const total = [1,2,3,4,5].reduce((sum, v) => {
    sum += v;
    return sum;
}, 0); // 15

注: 每一位参数都是可选
sum:累积器,存储回调函数的返回值,初始值为 initialValue。
v:当前处理的数组元素。
index:当前处理的数组元素的索引。
array:调用 reduce 方法的数组。
initialValue:可选参数,作为第一次调用回调函数时的初始值。

3. filter

根据特定条件快速筛选出符合要求的数组元素,实现数据过滤和筛选的功能。
应用:数据筛选、过滤

array.filter(function(element, index, array) {
    // 返回 true 表示保留该元素,返回 false 表示过滤掉该元素
}, thisArg);

// 示例
const newArray = [1,2,3,4,5].filter((v) => {
   return  v > 2
}); // [3, 4, 5]

element:当前处理的数组元素。
index:当前处理的数组元素的索引。
array:调用 filter 方法的数组。
thisArg:可选参数,执行回调函数时使用的 this 值。

4. map

数组中的每个元素执行一个指定的函数,并返回一个新的数组,新数组的元素是原始数组经过函数处理后的结果。
应用:对数组中的每个元素进行处理,生成一个新的数组,常用于数据转换、映射和提取等操作。

array.map(function(element, index, array) {
    // 返回经过处理后的新元素
}, thisArg);

// 示例:将数组中的每个元素乘以2并返回新数组
const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map(num => num * 2);

console.log(doubledNumbers); // 输出: [2, 4, 6, 8, 10]

element:当前处理的数组元素。
index:当前处理的数组元素的索引。
array:调用 map 方法的数组。
thisArg:可选参数,执行回调函数时使用的 this 值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小前端--可笑可笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值