【 filter函数】实用技巧方法
方法 函数 实用技巧 filter
2023-06-13 09:13:09 时间
目录
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函数需慎用。
相关文章
- js全局变量在其他方法中赋值后无法影响到该方法外的全局变量的值(奇葩问题)
- nonzero函数_python 类方法
- 哪些是模糊用语-《软件方法》自测题解析020
- 《软件方法》自测题解析-003需求映射设计以及微服务评价
- 查看Linux系统可用容量的方法(查看linux容量)
- Redis自定义函数(UDF)及其实现方法(redisudf)
- MSSQL中表值函数的使用方法(mssql 表值函数)
- 学习进入Redis容器的简单方法(怎么进入redis容器)
- MySQL中ASCLL函数的使用方法(mysql中ascll)
- MySQL中利用ANY函数取最值方法详解(mysql中any取最值)
- MySQL出现1267错误的解决方法(mysql中1267错误)
- Oracle数据库中应用加法函数的方法(oracle中加法函数)
- javascript(js)join函数使用方法介绍
- MySQL中的LOCATE和POSITION函数使用方法
- 用MySQL函数清除字符串首尾空白字符的方法
- php中unlink()、mkdir()、rmdir()等方法的使用介绍
- javascriptfullscreen全屏显示页面元素的方法
- Python的函数嵌套的使用方法
- JavaScript函数的4种调用方法详解
- 用css截取字符的几种方法详解(css排版隐藏溢出文本)
- javascript在IE下trim函数无法使用的解决方法