前端开发之JS中filter()的使用

代码拓霓人
• 阅读 244

前言

在前端开发过程中,对数组的数据进行处理也是比较常见的操作之一,而且对数组进行操作的频率远远大于对 对象进行操作,因前端培训此在开发过程中对于数组里面的数据进行处理是一项比较重要的技能,尤其是对于刚入行的前端开发者来说尤为重要,所以一定要掌握好相关技能。本篇博文来分享一下关于对数组里面的数据进行筛选的操作,那么就用到了JS中filter()方法使用。

filter()方法

1、定义

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

2、语法

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

3、参数说明

具体参数描述,如下图所示:

前端开发之JS中filter()的使用

返回值

返回值 返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。

4、用法

filter() 方法用于把Array中的某些元素过滤掉,然后返回剩下的未被过滤掉的元素。

5、注意事项

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

(2)filter() 不会改变原始数组。

6、使用实例

根据实际开发过程中的不同需求,把实战中比较常见的处理方式汇总出来,需求是做不完的,也不可能全部覆盖到,这里只分享一些比较常见的操作,方便有需要的开发者查阅使用,具体的实例如下所示。

1.返回数组array中所有元素都大于等于14的元素

eg:

var array = [14, 17, 18, 32, 33, 16, 40];
function checkItem(num) {

return num >= 14;

}
function numFunction() {

document.getElementById(“test”).innerHTML = array.filter(checkItem);  //显示结果:17, 18, 32, 33, 16, 40

}
判断数组里面是否存在某个值:

var array = [14, 17, 18, 32, 33, 16, 40];
newarr.filter(item => item.num==14); //判断数组中是否有14
console.log(newarr.filter(item => item.num==14)) //true

2.数组去重操作:对数组array中所有相同的元素进行去重复操作

function merge(array) {
return array.filter(function(item, index, arr) {

//当前元素,在原始数组中的第一个索引===当前索引值,否则返回当前元素
return array.indexOf(item, 0) === index;

});
}
var array = [2,2,’a’,’a’,true,true,15,17];
console.log(merge(array)); // 输出结果:[2, “a”, true, 15 ,17]

数组去重的另一个实例:

var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 9,]

    var newArray = array.filter(function(item, i, arr) {
        let a = arr.indexOf(item)
        return arr.indexOf(item) === i;
    });

console.log(newArray); //输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
3.数组中保留奇数或者偶数

(1)保留数组中的偶数:

var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    var newArray = array.filter((item, i, arr) => {
        //函数自身返回的是一个布尔值,只当返回值为true时,当前元素才会存入新的数组中。
        return item % 2 === 0;
    })
    console.log(newArr); //输出结果:[2, 4, 6, 8, 10]

(2)保留数组中的奇数:

  var array  = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    var newArray = array.filter((item, i, arr) => {
        //函数自身返回的是一个布尔值,只当返回值为true时,当前元素才会存入新的数组中。
        return item % 2 !== 0;
    })
   console.log(newArr); //输出结果:[1, 3, 5, 7, 9]

4.去掉数组中的空字符串、undefined、null

(1)去掉数组中的undefined

var array = ['1','2',undefined, '3.png',undefined, ‘a’]
var newArray = arr.filter(item => item)
console.log(newArray)
(2)去掉数组中的null

var array = ['1','2',null, '3.png',null, ‘a’]
var newArray = arr.filter(item => item)
console.log(newArray)
(3)去掉数组中的空字符串,但是空字符串里面不能包含空格

var array = ['1', '2', '', '3.png’, ’’, ‘a’]
var newArray = arr.filter(item => item)
console.log(newArray)
(4)另外一种去除空字符串的方法

var array = ['1','2',undefined, '3.png', ‘’, undefined, ‘a’, ' '];
let newArray=array.filter(i=>i && i.trim()); // 注意:IE9以下的版本没有这个trim()方法
console.log(newArray); //返回结果:['1','2', '3.png', ‘a’,]
5.把对象数组a中的某个属性值取出来存到数组b中

var arrayA = [
{name:"a",type:"letter"},{name:”1”,type:"digital"},
{name:”c”,type:"letter"},{name:”2”,type:"digital"},
];
var arrayB = arrayA.filter(function(array){ //对arrayA数组对象过滤如果array.type === "letter"就return出去, 再用一个变量接收
return array.type === "letter"
});
console.log(arrayB); //输出结果:[{name:"a",type:"letter"},{name:”c”,type:"letter"},]
6.filter()和find()结合使用,实现从数组中查找想要的元素

projectDetail() {

  if (this.value) {
    return this.sourcedata.filter((item) => { 
      return [item.ProjectName, item.ProjectNewNo].find( //通过item.ProjectName、item.ProjectNewNo来匹配是否是想要查找的元素
        (si) => {
          return si.indexOf(this.value) != -1;  //根据是否输入来匹配
        }
      );
    });
  }
  return this.sourcedata; //最后返回想要的元素的数组
}

前端开发之JS中filter()的使用

 原创作者:三掌柜666

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
4年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Easter79 Easter79
4年前
springboot2之优雅处理返回值
前言最近项目组有个老项目要进行前后端分离改造,应前端同学的要求,其后端提供的返回值格式需形如{"status":0,"message":"success","data":{}}方便前端数据处理。要实现前端同学这个需求,其实也挺简单的,
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Karen110 Karen110
4年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
4年前
Linux应急响应(二):捕捉短连接
0x00前言​短连接(shortconnnection)是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。在系统维护中,一般很难去察觉,需要借助网络安全设备或者抓包分析,才能够去发现。0x01应急场景​
达里尔 达里尔
2年前
给数组添加新数据,判断数据是否重复
多选要进行数组拼接,希望判断往原数组里添的新数据是否重复,封装个简易方法languageconstdataArrayname:'aaa',id:1,name:'bbb',id:2;constnewDataname:'ccc',id:2;//要添加的新数
代码拓霓人
代码拓霓人
Lv1
君不见高堂明镜悲白发,朝如青丝暮成雪。
文章
9
粉丝
0
获赞
0