日常对数据的处理都是后端来做,但是前端对数据的一些基本处理还是要掌握。数组是最常见的数据类型,我们时常要对他进行各种处理或者判断,接下来我给大家介绍几种基础的常用的遍历数组的方法,并求求大家不要再在项目里用 for 循环了,那玩意儿维护起来挺难受的

1.Array.foreach()

介绍

这是最基础的数组遍历方法,接收一个函数作为参数,效果是可以将数组循环一遍,函数参数有三个入参,不返回任何数据

[].foreach((item, index, arr) => {});

参数

item 每次遍历时对应的数组的元素 index 每次遍历时对应的数组的下标 arr 被遍历的数组本身

返回值

使用场景

需要遍历一个数组的时候

例子

将所有的数据和对应的下标都打印出来

const arr = ["张三", "罗翔", "张伟"];
arr.foreach((item, index, arr) => {
  console.log(item, index);
});
// '张三' 0
// '罗翔' 1
// '张伟' 2
 

2.Array.filter()

介绍

对数组进行筛选,接收一个方法作为参数,该方法的返回值为 true 时就将该元素添加进新的数组

[].filter((item, index, arr) => true);
 

参数

item 每次遍历时对应的数组的元素 index 每次遍历时对应的数组的下标 arr 被遍历的数组本身

返回值

一个新的数组

使用场景

需要获取到列表里符合条件的元素

例子

将所有大于 4 的数字挑选出来

const arr = [1, 5, 9, 2, 3];

const newArr = arr.filter((item, index, c) => item > 4);

console.log(newArr); //[5, 9]
 

3.Array.map()

介绍

对数组进行映射,传一个方法,该方法需要返回一个数据,然后将所有返回的数据组成一个数组

[].map((item, index, arr) => 对数据进行处理并返回);
复制代码

参数

item 每次遍历时对应的数组的元素 index 每次遍历时对应的数组的下标 arr 被遍历的数组本身

返回值

一个新的数组

使用场景

对数据进行处理,变成自己需要的数据格式

例子

将所有人的名字取出来

const arr = [
  { name: "张三", age: 14 },
  { name: "罗翔", age: 50 },
  { name: "张伟", age: 23 },
];

const newArr = arr.map((item, index, c) => item.name);

console.log(newArr); //['张三', '罗翔', '张伟']
 

4.Array.some()

介绍

对数组进行遍历,传入一个方法作为参数,返回一个 true 或者 false,一旦有一条返回的 true 则立即中止遍历

[].some((item, index, arr) => true);
 

参数

item 每次遍历时对应的数组的元素 index 每次遍历时对应的数组的下标 arr 被遍历的数组本身

返回值

当有一次遍历符合条件则返回 true,所有数据都不符合条件返回 false

使用场景

判断列表是否有一个或一个以上的元素符合某个条件

例子

列表里是否有人叫张伟? 列表里是否有人叫林三心?

const arr = [
  { name: "张三", age: 14 },
  { name: "罗翔", age: 50 },
  { name: "张伟", age: 23 },
];

const newArr1 = arr.some((item, index, c) => item.name === "张伟");
console.log(newArr1); // true

const newArr2 = arr.some((item, index, c) => item.name === "林三心");

console.log(newArr2); // false
 

5.Array.every()

介绍

对数组进行遍历,传入一个方法作为参数,返回一个 true 或者 false,false,一旦有一条返回的 false 则立即中止遍历(和 some 相反)

[].every((item, index, arr) => true);
 

参数

item 每次遍历时对应的数组的元素 index 每次遍历时对应的数组的下标 arr 被遍历的数组本身

返回值

当有遍历的所有方法 true 则返回 true,否则 false

使用场景

判断列表是否所有的元素都符合某个条件

例子

列表里是否所有人年龄都大于 18? 列表里是否所有人年龄都大于 3?

const arr = [
  { name: "张三", age: 14 },
  { name: "罗翔", age: 50 },
  { name: "张伟", age: 23 },
];

const newArr1 = arr.every((item, index, c) => item.age > 18);
console.log(newArr1); // false

const newArr2 = arr.every((item, index, c) => item.age > 3);

console.log(newArr2); // true
 

5.Array.find(),Array.findIndex()

介绍

对数组进行遍历,传入一个方法作为参数,返回第一个符合条件的元素本身或者他的下标(find 返回元素本身,findIndex 返回其下标)

[].find((item, index, arr) => true);
[].findIndex((item, index, arr) => true);
 

参数

item 每次遍历时对应的数组的元素 index 每次遍历时对应的数组的下标 arr 被遍历的数组本身

返回值

find 返回符合条件的元素本身,没有就返回 undefined findIndex 返回符合条件的元素的下标,没有就返回 undefined

使用场景

拿到符合条件的元素或他的下标

例子

找到年龄为 50 的人 找到年龄为 40 的人

const arr = [
  { name: "张三", age: 14 },
  { name: "罗翔", age: 50 },
  { name: "张伟", age: 23 },
];

const newArr1 = arr.every((item, index, c) => item.age === 50);
console.log(newArr1); //   { name: "罗翔", age: 50 }

const newArr2 = arr.every((item, index, c) => item.age === 40);

console.log(newArr2); // undefined
 

还有一些其他的好用的方法,比如reduce,有兴趣可以去看看


摸鱼社区:智一面