Array.filter & Array.find

Array.filter() 与 Array.find() 功能概述

  • filter()

    对调用数组进行遍历,找出符合指点条件的所有元素,将查找结果存储于 新数组 并返回。如果没有符合条件的元素则返回空数组。

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

    注意:对于 filter 结果,要先判断数组是否为空,否则 arr[index] 会致使报错

  • find()

    对调用数组进行遍历,找出 第一个 符合指点条件的元素并返回。如果没有符合条件的元素返回 undefined。

    语法:Array.find(function(currentValue, index, arr), thisValue)

注:这两个方法均不会改变原始数组,对空数组均不进行检测。

语法参数说明

  • function

    必须,对数据每个元素执行该元素,return true 则认为符合条件

    • currentValue 必须,当前元素的值

    • index 可选,当前元素索引

    • arr 可选,当前元素属于的数组对象,即调用数组

  • thisValue

    可选,用于定义 this 的值,默认为 undefined,暂时未实现其效果

应用示例

数组去重

1
2
3
4
5
6
7
8
9
let arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];

// indexOf返回第一个匹配元素的索引值
let res = arr.filter(function (element, index, self) {
return self.indexOf(element) === index;
});

console.log(res);
// 输出:[ 'apple', 'strawberry', 'banana', 'pear', 'orange' ]

资料博客