JavaScript 中数组是非常常用的数据结构,掌握其常用的处理方法可以大大提高开发效率。以下是常用的数组处理方法,以及一些巧妙的记忆方法:
1. push()
- 作用:在数组末尾添加一个或多个元素。
- 示例:
javascript">let arr = [1, 2]; arr.push(3); // [1, 2, 3]
- 记忆方法:
push
像“推”东西到数组的末尾。
2. pop()
- 作用:移除数组的最后一个元素。
- 示例:
javascript">let arr = [1, 2, 3]; arr.pop(); // [1, 2]
- 记忆方法:
pop
像“弹出”数组的最后一个元素。
3. shift()
- 作用:移除数组的第一个元素。
- 示例:
javascript">let arr = [1, 2, 3]; arr.shift(); // [2, 3]
- 记忆方法:
shift
像“移动”数组的第一个元素。
4. unshift()
- 作用:在数组的开头添加一个或多个元素。
- 示例:
javascript">let arr = [1, 2]; arr.unshift(0); // [0, 1, 2]
- 记忆方法:
unshift
是shift
的反操作,向数组开头“推”元素。
5. concat()
- 作用:合并两个或多个数组。
- 示例:
javascript">let arr1 = [1, 2]; let arr2 = [3, 4]; let arr3 = arr1.concat(arr2); // [1, 2, 3, 4]
- 记忆方法:
concat
是“连接”的意思,将数组连接在一起。
6. slice()
- 作用:返回数组的一个浅拷贝片段。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let sliced = arr.slice(1, 3); // [2, 3]
- 记忆方法:
slice
像“切片”,从数组中切出一部分。
7. splice()
- 作用:从数组中添加或删除元素。
- 示例:
javascript">let arr = [1, 2, 3, 4]; arr.splice(1, 2, 5); // [1, 5, 4]
- 记忆方法:
splice
是“拼接”,可以在任意位置添加或删除元素。
8. map()
- 作用:对数组中的每个元素执行函数,返回新数组。
- 示例:
javascript">let arr = [1, 2, 3]; let mapped = arr.map(x => x * 2); // [2, 4, 6]
- 记忆方法:
map
像“映射”,将数组中的每个元素映射为新值。
9. filter()
- 作用:过滤数组,返回符合条件的元素组成的新数组。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let filtered = arr.filter(x => x > 2); // [3, 4]
- 记忆方法:
filter
像“过滤器”,筛选出符合条件的元素。
10. reduce()
- 作用:将数组缩减为单个值。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let reduced = arr.reduce((acc, val) => acc + val, 0); // 10
- 记忆方法:
reduce
是“减少”,将数组“压缩”为一个值。
11. forEach()
- 作用:对数组中的每个元素执行函数,没有返回值。
- 示例:
javascript">let arr = [1, 2, 3]; arr.forEach(x => console.log(x)); // 1, 2, 3
- 记忆方法:
forEach
是“对每个”元素执行操作。
12. find()
- 作用:返回数组中第一个符合条件的元素。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let found = arr.find(x => x > 2); // 3
- 记忆方法:
find
是“找到”第一个符合条件的元素。
13. some()
- 作用:检查数组中是否有至少一个元素符合条件。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let hasSome = arr.some(x => x > 3); // true
- 记忆方法:
some
是“某些”,检查是否有某些元素符合条件。
14. every()
- 作用:检查数组中的所有元素是否都符合条件。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let allMatch = arr.every(x => x > 0); // true
- 记忆方法:
every
是“每个”,检查是否每个元素都符合条件。
15. includes()
- 作用:检查数组是否包含某个值。
- 示例:
javascript">let arr = [1, 2, 3]; let hasValue = arr.includes(2); // true
- 记忆方法:
includes
是“包含”,检查数组是否包含某个值。
16. indexOf()
- 作用:返回数组中某个值的第一个索引,若不存在则返回
-1
。 - 示例:
javascript">let arr = [1, 2, 3]; let index = arr.indexOf(2); // 1
- 记忆方法:
indexOf
是“索引”,返回值的索引位置。
17. join()
- 作用:将数组的所有元素连接成一个字符串。
- 示例:
javascript">let arr = [1, 2, 3]; let str = arr.join('-'); // "1-2-3"
- 记忆方法:
join
是“连接”,将数组元素连接成字符串。
18. reverse()
- 作用:反转数组的顺序。
- 示例:
javascript">let arr = [1, 2, 3]; arr.reverse(); // [3, 2, 1]
- 记忆方法:
reverse
是“反转”,将数组顺序倒过来。
19. sort()
- 作用:对数组元素进行排序。
- 示例:
javascript">let arr = [3, 1, 2]; arr.sort(); // [1, 2, 3]
- 记忆方法:
sort
是“排序”,将数组元素按顺序排列。
20. flat()
- 作用:将嵌套数组“扁平化”。
- 示例:
javascript">let arr = [1, [2, [3]]]; let flattened = arr.flat(2); // [1, 2, 3]
- 记忆方法:
flat
是“扁平化”,将嵌套数组“压平”。
21. flatMap()
- 作用:先对数组中的每个元素执行映射函数,然后将结果“扁平化”一层。
- 示例:
javascript">let arr = [1, 2, 3]; let flatMapped = arr.flatMap(x => [x, x * 2]); // [1, 2, 2, 4, 3, 6]
- 记忆方法:
flatMap
是map
和flat
的结合,先映射再扁平化。
22. fill()
- 作用:用固定值填充数组的指定范围。
- 示例:
javascript">let arr = [1, 2, 3, 4]; arr.fill(0, 1, 3); // [1, 0, 0, 4]
- 记忆方法:
fill
是“填充”,用指定值填充数组的某一部分。
23. copyWithin()
- 作用:将数组的一部分复制到同一数组的另一个位置。
- 示例:
javascript">let arr = [1, 2, 3, 4, 5]; arr.copyWithin(0, 3); // [4, 5, 3, 4, 5]
- 记忆方法:
copyWithin
是“内部复制”,将数组的一部分复制到另一位置。
24. entries()
- 作用:返回一个包含数组键值对的迭代器。
- 示例:
javascript">let arr = ['a', 'b', 'c']; for (let [index, value] of arr.entries()) {console.log(index, value); // 0 'a', 1 'b', 2 'c' }
- 记忆方法:
entries
是“条目”,返回数组的键值对。
25. keys()
- 作用:返回一个包含数组键的迭代器。
- 示例:
javascript">let arr = ['a', 'b', 'c']; for (let key of arr.keys()) {console.log(key); // 0, 1, 2 }
- 记忆方法:
keys
是“键”,返回数组的索引。
26. values()
- 作用:返回一个包含数组值的迭代器。
- 示例:
javascript">let arr = ['a', 'b', 'c']; for (let value of arr.values()) {console.log(value); // 'a', 'b', 'c' }
- 记忆方法:
values
是“值”,返回数组的元素。
27. findIndex()
- 作用:返回数组中第一个符合条件的元素的索引,若不存在则返回
-1
。 - 示例:
javascript">let arr = [1, 2, 3, 4]; let index = arr.findIndex(x => x > 2); // 2
- 记忆方法:
findIndex
是find
的索引版本,返回符合条件的索引。
28. reduceRight()
- 作用:从右到左将数组缩减为单个值。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let reducedRight = arr.reduceRight((acc, val) => acc + val, 0); // 10
- 记忆方法:
reduceRight
是reduce
的从右到左版本。
29. toLocaleString()
- 作用:将数组转换为本地化的字符串。
- 示例:
javascript">let arr = [1, 'a', new Date()]; let str = arr.toLocaleString(); // "1,a,2023/10/10 12:00:00"
- 记忆方法:
toLocaleString
是“本地化字符串”,将数组转换为本地格式的字符串。
30. toString()
- 作用:将数组转换为字符串。
- 示例:
javascript">let arr = [1, 2, 3]; let str = arr.toString(); // "1,2,3"
- 记忆方法:
toString
是“转换为字符串”,将数组转换为字符串。
31. Array.isArray()
- 作用:检查一个值是否为数组。
- 示例:
javascript">let arr = [1, 2, 3]; let isArr = Array.isArray(arr); // true
- 记忆方法:
Array.isArray
是“是否是数组”,用于检查是否为数组。
32. Array.from()
- 作用:将类数组对象或可迭代对象转换为数组。
- 示例:
javascript">let str = 'hello'; let arr = Array.from(str); // ['h', 'e', 'l', 'l', 'o']
- 记忆方法:
Array.from
是“从…创建数组”,将其他对象转换为数组。
33. Array.of()
- 作用:创建一个包含任意数量元素的新数组。
- 示例:
javascript">let arr = Array.of(1, 2, 3); // [1, 2, 3]
- 记忆方法:
Array.of
是“创建数组”,用于创建包含指定元素的新数组。
34. at()
- 作用:返回数组中指定索引的元素,支持负索引。
- 示例:
javascript">let arr = [1, 2, 3]; let value = arr.at(-1); // 3
- 记忆方法:
at
是“在…位置”,返回指定索引的元素。
35. with()
- 作用:返回一个新数组,其中指定索引的元素被替换为指定值。
- 示例:
javascript">let arr = [1, 2, 3]; let newArr = arr.with(1, 4); // [1, 4, 3]
- 记忆方法:
with
是“替换”,返回一个新数组,其中指定索引的元素被替换。
36. toReversed()
- 作用:返回一个新数组,其中元素顺序与原数组相反。
- 示例:
javascript">let arr = [1, 2, 3]; let reversed = arr.toReversed(); // [3, 2, 1]
- 记忆方法:
toReversed
是“反转”,返回一个新数组,其中元素顺序与原数组相反。
37. toSorted()
- 作用:返回一个新数组,其中元素按指定顺序排序。
- 示例:
javascript">let arr = [3, 1, 2]; let sorted = arr.toSorted(); // [1, 2, 3]
- 记忆方法:
toSorted
是“排序”,返回一个新数组,其中元素按指定顺序排序。
38. toSpliced()
- 作用:返回一个新数组,其中指定范围的元素被替换为指定值。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let spliced = arr.toSpliced(1, 2, 5); // [1, 5, 4]
- 记忆方法:
toSpliced
是“拼接”,返回一个新数组,其中指定范围的元素被替换为指定值。
39. with()
- 作用:返回一个新数组,其中指定索引的元素被替换为指定值。
- 示例:
javascript">let arr = [1, 2, 3]; let newArr = arr.with(1, 4); // [1, 4, 3]
- 记忆方法:
with
是“替换”,返回一个新数组,其中指定索引的元素被替换。
40. groupBy()
- 作用:将数组元素按指定条件分组。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let grouped = arr.groupBy(x => x % 2 === 0 ? 'even' : 'odd'); // { odd: [1, 3], even: [2, 4] }
- 记忆方法:
groupBy
是“分组”,将数组元素按指定条件分组。
41. groupByToMap()
- 作用:将数组元素按指定条件分组,并返回一个
Map
对象。 - 示例:
javascript">let arr = [1, 2, 3, 4]; let grouped = arr.groupByToMap(x => x % 2 === 0 ? 'even' : 'odd'); // Map { 'odd' => [1, 3], 'even' => [2, 4] }
- 记忆方法:
groupByToMap
是“分组到 Map”,将数组元素按指定条件分组并返回Map
对象。
42. findLast()
- 作用:返回数组中最后一个符合条件的元素。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let found = arr.findLast(x => x > 2); // 4
- 记忆方法:
findLast
是“找到最后一个”,返回数组中最后一个符合条件的元素。
43. findLastIndex()
- 作用:返回数组中最后一个符合条件的元素的索引,若不存在则返回
-1
。 - 示例:
javascript">let arr = [1, 2, 3, 4]; let index = arr.findLastIndex(x => x > 2); // 3
- 记忆方法:
findLastIndex
是“找到最后一个索引”,返回数组中最后一个符合条件的元素的索引。
44. toSorted()
- 作用:返回一个新数组,其中元素按指定顺序排序。
- 示例:
javascript">let arr = [3, 1, 2]; let sorted = arr.toSorted(); // [1, 2, 3]
- 记忆方法:
toSorted
是“排序”,返回一个新数组,其中元素按指定顺序排序。
45. toSpliced()
- 作用:返回一个新数组,其中指定范围的元素被替换为指定值。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let spliced = arr.toSpliced(1, 2, 5); // [1, 5, 4]
- 记忆方法:
toSpliced
是“拼接”,返回一个新数组,其中指定范围的元素被替换为指定值。
46. with()
- 作用:返回一个新数组,其中指定索引的元素被替换为指定值。
- 示例:
javascript">let arr = [1, 2, 3]; let newArr = arr.with(1, 4); // [1, 4, 3]
- 记忆方法:
with
是“替换”,返回一个新数组,其中指定索引的元素被替换。
47. groupBy()
- 作用:将数组元素按指定条件分组。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let grouped = arr.groupBy(x => x % 2 === 0 ? 'even' : 'odd'); // { odd: [1, 3], even: [2, 4] }
- 记忆方法:
groupBy
是“分组”,将数组元素按指定条件分组。
48. groupByToMap()
- 作用:将数组元素按指定条件分组,并返回一个
Map
对象。 - 示例:
javascript">let arr = [1, 2, 3, 4]; let grouped = arr.groupByToMap(x => x % 2 === 0 ? 'even' : 'odd'); // Map { 'odd' => [1, 3], 'even' => [2, 4] }
- 记忆方法:
groupByToMap
是“分组到 Map”,将数组元素按指定条件分组并返回Map
对象。
49. findLast()
- 作用:返回数组中最后一个符合条件的元素。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let found = arr.findLast(x => x > 2); // 4
- 记忆方法:
findLast
是“找到最后一个”,返回数组中最后一个符合条件的元素。
50. findLastIndex()
- 作用:返回数组中最后一个符合条件的元素的索引,若不存在则返回
-1
。 - 示例:
javascript">let arr = [1, 2, 3, 4]; let index = arr.findLastIndex(x => x > 2); // 3
- 记忆方法:
findLastIndex
是“找到最后一个索引”,返回数组中最后一个符合条件的元素的索引。
51. toSorted()
- 作用:返回一个新数组,其中元素按指定顺序排序。
- 示例:
javascript">let arr = [3, 1, 2]; let sorted = arr.toSorted(); // [1, 2, 3]
- 记忆方法:
toSorted
是“排序”,返回一个新数组,其中元素按指定顺序排序。
52. toSpliced()
- 作用:返回一个新数组,其中指定范围的元素被替换为指定值。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let spliced = arr.toSpliced(1, 2, 5); // [1, 5, 4]
- 记忆方法:
toSpliced
是“拼接”,返回一个新数组,其中指定范围的元素被替换为指定值。
53. with()
- 作用:返回一个新数组,其中指定索引的元素被替换为指定值。
- 示例:
javascript">let arr = [1, 2, 3]; let newArr = arr.with(1, 4); // [1, 4, 3]
- 记忆方法:
with
是“替换”,返回一个新数组,其中指定索引的元素被替换。
54. groupBy()
- 作用:将数组元素按指定条件分组。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let grouped = arr.groupBy(x => x % 2 === 0 ? 'even' : 'odd'); // { odd: [1, 3], even: [2, 4] }
- 记忆方法:
groupBy
是“分组”,将数组元素按指定条件分组。
55. groupByToMap()
- 作用:将数组元素按指定条件分组,并返回一个
Map
对象。 - 示例:
javascript">let arr = [1, 2, 3, 4]; let grouped = arr.groupByToMap(x => x % 2 === 0 ? 'even' : 'odd'); // Map { 'odd' => [1, 3], 'even' => [2, 4] }
- 记忆方法:
groupByToMap
是“分组到 Map”,将数组元素按指定条件分组并返回Map
对象。
56. findLast()
- 作用:返回数组中最后一个符合条件的元素。
- 示例:
javascript">let arr = [1, 2, 3, 4]; let found = arr.findLast(x => x > 2); // 4
- 记忆方法:
findLast
是“找到最后一个”,返回数组中最后一个符合条件的元素。
57. findLastIndex()
- 作用:返回数组中最后一个符合条件的元素的索引,若不存在则返回
-1
。 - 示例:
javascript">let arr = [1, 2, 3, 4]; let index = arr.findLastIndex(x => x > 2); // 3
- 记忆方法:
findLastIndex
是“找到最后一个索引”,返回数组中最后一个符合条件的元素的索引。
58. toSorted()
- 作用:返回一个新数组,其中元素按指定顺序排序。
- 示例:
javascript">let arr = [3, 1, 2]; let sorted = arr.toSorted(); // [1, 2, 3]
- 记忆方法:
toSorted
是“排序”,返回一个新数组,其中元素按指定顺序排序。
记忆技巧总结:
-
增删操作:
- 末尾操作:
push
(推入)、pop
(弹出)。 - 开头操作:
unshift
(推入开头)、shift
(移出开头)。 - 任意位置:
splice
(拼接)、toSpliced
(新数组拼接)。
- 末尾操作:
-
查找与判断:
- 查找元素:
find
(找到第一个)、findLast
(找到最后一个)、indexOf
(索引)、findIndex
(索引)、findLastIndex
(最后一个索引)。 - 条件判断:
some
(某些)、every
(每个)、includes
(包含)。
- 查找元素:
-
遍历与转换:
- 遍历操作:
map
(映射)、forEach
(对每个)、filter
(过滤)、reduce
(缩减)、reduceRight
(从右到左缩减)。 - 转换操作:
join
(连接成字符串)、flat
(扁平化)、flatMap
(映射后扁平化)、reverse
(反转)、sort
(排序)、toReversed
(新数组反转)、toSorted
(新数组排序)。
- 遍历操作:
-
创建与复制:
- 创建数组:
Array.from
(从类数组创建)、Array.of
(创建包含指定元素)。 - 复制与填充:
slice
(切片)、copyWithin
(内部复制)、fill
(填充)。
- 创建数组:
-
分组与聚合:
- 分组操作:
groupBy
(分组)、groupByToMap
(分组到Map)。 - 聚合操作:
reduce
(聚合)、reduceRight
(从右到左聚合)。
- 分组操作:
-
迭代与获取:
- 迭代器:
entries
(键值对)、keys
(键)、values
(值)。 - 获取元素:
at
(指定索引)、with
(替换元素并返回新数组)。
- 迭代器:
-
其他实用方法:
- 类型检查:
Array.isArray
(是否是数组)。 - 本地化:
toLocaleString
(本地化字符串)。 - 字符串转换:
toString
(转换为字符串)。
- 类型检查:
通过以上分类记忆,可以更高效地掌握和使用JavaScript数组的各种方法。