JavaScript 之常忽略数组方法filter()

在开发过程中我们常常遇到,需要过滤数据的情况。好比我们从接口获取到的数据,不同的模块可能所需要的具体内容不同,又或者有4个tab,当我们点击其中一个对应的标题时,隐藏另外3个,这时我们很自然的想到的是根据不同的筛选条件重新请求接口,但是这样往往是耗费性能的。

针对上边的问题,我们可以一次请求一个比较大的数据集,当我们具体显示页面中的某一部分时再进行筛选。在这里我将介绍,js数组操作filter()

 filter()接受三个参数,返回的是数组,数组内是所有满足条件的元素。如果不满足条件,filter()返回的是一个空数组。

filter()可以做什么?

1 创建一个数组,判断数组中是否存在某个值

var newarr = [
  { num: 1, val: 'ceshi', flag: 'aa' },
  { num: 2, val: 'ceshi2', flag: 'aa2'  }
]
console.log(newarr.filter(item => item.num===2 ))

2.去掉空数组空字符串、undefined、null

var arr = ['1','2',undefined, '3.jpg',undefined]
var newArr = arr.filter(item => item)
console.log(newArr)

var arr = ['1','2',null, '3.jpg',null]
var newArr = arr.filter(item => item)
console.log(newArr)

>//空字符串里面不能包含空格
var arr = ['1','2','', '3.jpg','']
var newArr = arr.filter(item => item)
console.log(newArr)

3.去掉数组中不符合项

var arr = [20,30,50, 96,50]
var newArr = arr.filter(item => item>40)  
console.log(newArr)

4.数组去重

var arr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 7,8,8,0,8,6,3,4,56,2];
var arr2 = arr.filter((x, index,self)=>self.indexOf(x)===index)  
console.log(arr2); //[1, 2, 3, 4, 5, 6, 7, 8, 0, 56]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章