【 filter函数】实用技巧方法

 

目录

filter是什么

filter函数的用法是什么?


filter是什么

filter函数是数组里的一个方法,也叫过滤器,它主要起到的是过滤作用,返回符合条件表达式的数组。

filter函数的用法是什么?

filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。 
和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。

用法实例1:

//例如,在一个Array中,删掉偶数,只保留奇数,可以这么写:

var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
    return x % 2 !== 0;
});
console.log(r)  // [1, 5, 9, 15]

需求:在返回数据中根据类型返回对应的数据,填充到空数组中。

let a = 123.3123;
			let b = 41.4233;
			let c = a + ',' + b
			console.log(c)
			let list1 = [];
			let list2 = [];
			let list3 = [];
			let list4 = [];
			let taskList = [
				{
					'name':'安装1',
					'task_type':1,
				},
				{
					'name':'安装2',
					'task_type':1,
				},
				{
					'name':'移机1',
					'task_type':2,
				},
				{
					'name':'移机2',
					'task_type':2,
				},
				{
					'name':'维修1',
					'task_type':3,
				},
				{
					'name':'维修2',
					'task_type':3,
				},
				{
					'name':'拆机1',
					'task_type':4,
				},
				{
					'name':'拆机2',
					'task_type':4,
				},
			]
			list1 = taskList.filter((item) => {
				return item.task_type == 1;
			});
			list2 = taskList.filter((item) => {
				return item.task_type == 2;
			});
			list3 = taskList.filter((item) => {
				return item.task_type == 3;
			});
			list4 = taskList.filter((item) => {
				return item.task_type == 4;
			});
			console.log('list1',list1)
			console.log('list2',list2)
			console.log('list3',list3)
			console.log('list4',list4)

/**
通过给予一个判断,最终从数组里筛选出了符合条件的元素,并返回了一个新的数组,也可以称为过滤后的数组。

*/

需要注意的一点,filter函数存在一个隐式转换机制,我们在筛选数组里面的元素时,符合条件表达式的元素会被filter函数默认转换成true并通过return值返回并添加到一个新的数组当中,而不满足true,即默认被转换为false的元素会自动的过滤掉,例如:

var arr = [1,2,3,45,65,87,456,0,'',false,NaN,undefined,null]
        var str = arr.filter(function(v) {
           return v 
            
        })
        console.log(str)    -->输出[1, 2, 3, 45, 65, 87, 456]


这里我们并没有给判断条件,但最终return的数组中自动把0,’’,false,NaN,undefined,null这些元素给过滤掉了,而这六个值通过隐式转换都为false,因此在最终返回的新数组中并不包含原数组中所有的元素。于是我们知道filter和其他操作数组方法的最大不同点就是它自身的过滤机制会预先对数组进行一个筛选处理。


因此filter函数需慎用。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值