js数组filter()

371 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

js数组filter()

数组的filter()方法是创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。若没有符合条件的元素则返回空数组。若有符合条件的元素,则将符合条件的元素放入新数组中。

filter()的语法

array.filter(function(currentValue,index,arr), thisValue)

function为必须的函数,数组中每个元素都会执行这个函数。

currentValue:必须,当前元素的值。

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

arr:可选,当前元素属于的数组对象。

thisValue:可选,对象作为该执行回调时使用,传递给函数,用作this的值。 如果省略了thisValue,this的值为undefined。

菜鸟教程介绍filter()的地址:www.runoob.com/jsref/jsref…

数组中元素去重

数组中元素去重,并得到新数组:

// 定义数组
let arr = [6, 6, 8, 8, 9, 9, 86, 86, 96, 96, 98, 98];
// 数组元素去重,indexOf返回指定字符串在字符串中首次出现的位置。
let arrList = arr.filter((value, index, arr) => {
  // 打印数组的所有值。
  console.log(value);
  // 如果当前索引等于首次出现时的索引,说明不为重复元素。
  return index == arr.indexOf(value);
});
console.log(arrList);

image.png

筛选数组中的元素

获取数组中值大于80的元素,并得到新数组:

// 定义数组
let arr = [6, 6, 8, 8, 9, 9, 86, 86, 96, 96, 98, 98];
// 当箭头函数的函数体只有一个return语句时,可省略return和大括号{},获取数组中值大于80的元素。
let arrList = arr.filter((value) => value > 80);
console.log(arrList);

image.png

filter()特点

filter()不会对空数组进行检测。

filter()不会改变原数组。

函数执行次数等于数组长度。

函数内部的return:当return true时,元素满足筛选条件,放入新数组中。当return false时,元素不满足筛选条件,不放入新数组中。

filter()的返回值:返回筛选之后符合条件的元素组成的新数组,如果没有符合条件的元素则返回空数组。