您的位置:

JavaScript中Array.filter的使用详解

一、简介

Array.filter是ES6新增的高阶函数,它接收一个回调函数,该函数作用于数组的每一个元素,返回true则保留该元素,返回false则过滤掉该元素,最终返回一个新的数组。

二、语法

array.filter(function(currentValue, index, arr), thisValue)
  • currentValue:当前遍历到的数组元素
  • index:当前遍历到的数组元素的下标
  • arr:被遍历的数组
  • thisValue:可选,指定回调函数中的this对象

三、应用场景

在实际开发中,Array.filter广泛应用于从数组中获取指定条件的元素,例如:

  • 从一个对象数组中筛选出满足指定条件的对象
  • 从一个字符串数组中筛选出指定字符开头的字符串
  • 从一个数字数组中筛选出大于某个特定数字的元素

四、实例一:筛选对象数组

假设有一个人员信息对象数组,需要筛选出所有年龄大于等于18岁且性别为女性的人员:

const persons = [
  { name: '张三', age: 20, gender: '男' },
  { name: '李四', age: 17, gender: '女' },
  { name: '王五', age: 18, gender: '女' },
  { name: '赵六', age: 22, gender: '男' },
]

const females = persons.filter(person => person.age >= 18 && person.gender === '女')

console.log(females) // [{ name: '王五', age: 18, gender: '女' }]

用filter函数遍历persons数组,将符合条件的元素放入新的数组females中,并返回females数组。

五、实例二:筛选字符串数组

假设有一个字符串数组,需要筛选出所有以字母a开头的字符串:

const strs = ['apple', 'banana', 'avocado', 'kiwi', 'apricot']

const aStrs = strs.filter(str => str.startsWith('a'))

console.log(aStrs) // ['apple', 'avocado', 'apricot']

利用filter函数遍历strs数组,用startsWith方法判断元素是否以字母a开头,将符合条件的元素放入新数组aStrs中,最终返回aStrs数组。

六、实例三:筛选数字数组

假设有一个数字数组,需要筛选出所有大于等于70的元素:

const scores = [90, 60, 80, 70, 50, 85]

const highScores = scores.filter(score => score >= 70)

console.log(highScores) // [90, 80, 70, 85]

利用filter函数遍历scores数组,将大于等于70的元素放入新数组highScores中,并返回highScores数组。

七、结语

Array.filter是一个非常灵活实用的函数,能够帮助我们快速地从数组中提取所需元素,同时也可以通过自定义回调函数进行更为复杂的筛选操作。希望大家可以善用Array.filter,提高开发效率。