欢迎访问宙启技术站
智能推送

数组操作函数,让你避免重复造轮子

发布时间:2023-06-13 19:35:26

在编程中,我们常常需要对数组进行各种各样的操作,比如筛选、排序、转换等等。而这些操作的实现都需要一定的技术难度和时间成本。这时候,使用一些现有的数组操作函数可以是我们避免重复造轮子的好办法。

下面,我们就来介绍一下常用的数组操作函数以及它们的用处。

1. map()

map() 方法可以对数组中的每一个元素进行操作,返回一个新的数组。

语法:array.map(function(currentValue, index, array), thisValue)

- currentValue: 必选。当前元素的值。

- index: 可选。当前元素的索引。

- array: 可选。当前元素所属的数组对象。

- thisValue: 可选。对象作为该执行回调函数时的 this 对象。

最常见的用法是将数组中的每个元素进行转换、提取或处理,将结果保存在一个新的数组中返回。

例如,我们有一个数字数组 [1, 2, 3],使用 map() 方法将其每个元素乘以 2,可以这样写:

const arr = [1, 2, 3];
const newArr = arr.map(item => item * 2);

这样就得到了新的数组 [2, 4, 6]。

2. filter()

filter() 方法可以根据指定的条件筛选数组中的元素,返回一个新的数组。

语法:array.filter(function(currentValue, index, array), thisValue)

- currentValue: 必选。当前元素的值。

- index: 可选。当前元素的索引。

- array: 可选。当前元素所属的数组对象。

- thisValue: 可选。对象作为该执行回调函数时的 this 对象。

最常见的用法是根据某个条件筛选数组中的元素。

例如,我们有一个数字数组 [1, 2, 3, 4, 5],使用 filter() 方法筛选出大于 3 的元素,可以这样写:

const arr = [1, 2, 3, 4, 5];
const newArr = arr.filter(item => item > 3);

这样就得到了新的数组 [4, 5]。

3. reduce()

reduce() 方法可以对数组中的元素进行累加、合并等操作,返回一个结果。

语法:array.reduce(function(total, currentValue, currentIndex, array), initialValue)

- total: 必选。初始值,或者上一次回调函数返回的值。

- currentValue: 必选。当前元素的值。

- currentIndex: 可选。当前元素的索引。

- array: 可选。当前元素所属的数组对象。

- initialValue: 可选。作为 次调用 callback 的 个参数的值。

最常见的用法是对数组中的元素进行累加,例如计算数组中所有元素的和:

const arr = [1, 2, 3];
const sum = arr.reduce((prev, cur) => prev + cur);

这样就得到了数组所有元素的和 6。

4. sort()

sort() 方法可以对数组中的元素进行排序,返回一个排序后的数组。

语法:array.sort(function(firstElement, secondElement))

- firstElement: 必选。 个比较的元素。

- secondElement: 必选。第二个比较的元素。

最常见的用法是对数字数组进行排序:

const arr = [3, 2, 1];
arr.sort((a, b) => a - b);

可以通过传入一个比较函数,来实现不同的排序策略。上面的例子是通过升序排列数组。

5. reverse()

reverse() 方法可以将数组中的元素顺序颠倒,返回一个新的数组。

语法:array.reverse()

最常见的用法是将数组顺序颠倒:

const arr = [1, 2, 3];
const newArr = arr.reverse();

得到的结果是 [3, 2, 1]。

6. concat()

concat() 方法可以将多个数组合并成一个数组,返回一个新的数组。

语法:array.concat(array1, array2, ..., arrayN)

最常见的用法是将多个数组合并成一个数组:

const arr1 = [1, 2];
const arr2 = [3, 4];
const newArr = arr1.concat(arr2);

得到的结果是 [1, 2, 3, 4]。

7. slice()

slice() 方法可以返回数组的一部分,返回一个新的数组。

语法:array.slice(start, end)

- start: 必选。起始位置。

- end: 可选。终止位置。

最常见的用法是从数组中提取一部分:

const arr = [1, 2, 3, 4, 5];
const newArr = arr.slice(1, 3);

得到的结果是 [2, 3]。

8. indexOf()

indexOf() 方法可以查找指定元素在数组中的位置,返回一个索引值。

语法:array.indexOf(searchElement, fromIndex)

- searchElement: 必选。要查找的元素。

- fromIndex: 可选。从其开始搜索的索引位置。

最常见的用法是查找数组中是否存在某个元素:

const arr = [1, 2, 3];
const index = arr.indexOf(2);

得到的结果是 1。

9. lastIndexOf()

lastIndexOf() 方法可以查找指定元素在数组中的位置,从后向前搜索,返回一个索引值。

语法:array.lastIndexOf(searchElement, fromIndex)

- searchElement: 必选。要查找的元素。

- fromIndex: 可选。从其开始搜索的索引位置。

最常见的用法是查找数组中是否存在某个元素:

const arr = [1, 2, 2, 3];
const index = arr.lastIndexOf(2);

得到的结果是 2。

总结

在日常编程中,我们经常需要对数组进行各种各样的操作,而这些操作的实现需要一定的技术难度和时间成本。使用一些现有的数组操作函数可以帮助我们避免重复造轮子,提高开发效率。本文介绍了常用的数组操作函数,包括 map()、filter()、reduce()、sort()、reverse()、concat()、slice()、indexOf() 和 lastIndexOf(),希望能对大家有所帮助。