JS的fliter()方法

143 阅读1分钟

定义和用法

filter用于对数组进行过滤。
filter()方法创建了一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
!!!:filter()不会对空数组进行检测;不会改变原始数组。

语法:

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

image.png

实例:

1.返回数组nums中所有大于5的元素。

let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
 
let res = nums.filter((num) => {
  return num > 5;
});
 
console.log(res);  // [6, 7, 8, 9, 10]

2.利用filter遍历出所有偶数

let arr = [56, 15, 48, 3, 7];

let newArr = arr.filter(function (x) {
    return x % 2 === 0;
});

console.log(newArr)
// [56, 48]

3.利用filter进行数组去重

function unique(arr) {
  return arr.filter(function(item, index, arr) {
    //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
    return arr.indexOf(item, 0) === index;
  });
}
var arr = [1,1,'RUNOOB','RUNOOB',true,true,15];
console.log(unique(arr))
// [1, "RUNOOB", true, 15]
 var arr = ['apple','strawberry','banana','pear','apple','orange','orange','strawberry']
 var temp_arr = arr.filter(function (element, index, self) {
      return self.indexOf(element) === index
    })
 console.log(temp_arr)

indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了,所以重复的元素仅会保留第一个位置的元素。