filter函数(JS)

JavaScript的过滤大师:深度解析Filter用法 本文将深入研究JavaScript中`filter`方法的用法。我们将从基础的数组筛选开始,逐步深入,介绍如何使用`filter`方法创建自定义的过滤函数,以及在实际项目中如何灵活运用这一强大的数组操作方法。 阅读详情

filter函数

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

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

var arr = [1, 2, 4, 5, 6, 9, 10, 15];

var r = arr.filter(function (x) {

return x % 2 !== 0;

});

r; // [1, 5, 9, 15]

把一个Array中的空字符串删掉,可以这么写:

var arr = ['A', '', 'B', null, undefined, 'C', ' '];

var r = arr.filter(function (s) {

return s && s.trim(); // 注意:IE9以下的版本没有trim()方法

});

arr; // ['A', 'B', 'C']

可见用filter()这个高阶函数,关键在于正确实现一个“筛选”函数。

回调函数

filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身:

var arr = ['A', 'B', 'C'];

var r = arr.filter(function (element, index, self) {

console.log(element); // 依次打印'A', 'B', 'C'

console.log(index); // 依次打印0, 1, 2

console.log(self); // self就是变量arr

return true;

});

利用filter,可以巧妙地去除Array的重复元素:

'use strict';


var r,arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];


r = arr.filter(function (element, index, self) {

return self.indexOf(element) === index;

});


alert(r.toString());

练习 
请尝试用filter()筛选出素数:

'use strict';
function get_primes(arr) {
  return arr.filter(function(element, index, self) {
    if (element === 1) return false;
    if (element === 2) return true;
    if (element === 3) return true;
    for (let i = 2; i <= element / 2; i++) {
      if (element % i === 0) {
        return false;
      }
    }
    return true;
  });
}

// 测试:
var x, r, arr = [];
for (x = 1; x < 100; x++) {
  arr.push(x);
}
r = get_primes(arr);
if (r.toString() === [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97].toString()) {
  alert('测试通过!');
} else {
  alert('测试失败: ' + r.toString());
}

sort函数

幸运的是,sort()方法也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。 
要按数字大小排序,我们可以这么写:

var arr = [10, 20, 1, 2];

arr.sort(function (x, y) {

  if (x < y) {

    return -1;

  }

  if (x > y) {

    return 1;

  }

  return 0;

}); // [1, 2, 10, 20]

如果要倒序排序,我们可以把大的数放前面:

var arr = [10, 20, 1, 2];

arr.sort(function (x, y) {

  if (x < y) {

    return 1;

  }

  if (x > y) {

    return -1;

  }

  return 0;

}); // [20, 10, 2, 1]

默认情况下,对字符串排序,是按照ASCII的大小比较的,现在,我们提出排序应该忽略大小写,按照字母序排序。要实现这个算法,不必对现有代码大加改动,只要我们能定义出忽略大小写的比较算法就可以:

var arr = ['Google', 'apple', 'Microsoft'];

arr.sort(function (s1, s2) {

  x1 = s1.toUpperCase();

  x2 = s2.toUpperCase();

  if (x1 < x2) {

    return -1;

  }

  if (x1 > x2) {

    return 1;

  }

  return 0;

}); // ['apple', 'Google', 'Microsoft']

忽略大小写来比较两个字符串,实际上就是先把字符串都变成大写(或者都变成小写),再比较。 
从上述例子可以看出,高阶函数的抽象能力是非常强大的,而且,核心代码可以保持得非常简洁。 
最后友情提示,sort()方法会直接对Array进行修改,它返回的结果仍是当前Array:

var a1 = ['B', 'A', 'C'];

var a2 = a1.sort();

a1; // ['A', 'B', 'C']

a2; // ['A', 'B', 'C']

a1 === a2; // true, a1和a2是同一对象

 

Python中的filter函数用法详解 filter函数是Python中一个非常实用的内置函数,可以用于从序列中筛选出符合特定条件的元素,生成一个由符合条件元素组成的新列表。通过掌握filter函数的用法,我们可以更方便地进行数据清洗和预处理,实现更为复杂的数据处理需求。同时,掌握lambda表达式和列表推导式的用法也可以帮助我们更高效地使用filter函数。 阅读详情

相关推荐

filter 函数

接下来来看 filter(function, iterable) 函数,它和 map 函数类似, function 同样表示一个函数对象。filter() 函数表示对 iterable 中的每个元素, 都使用 function 判断,并返回 True 或者 False, 最后将返回 True 的元素组成一个新的可遍历的集合。 # !/usr/bin/env python # -*- coding: utf-8 -*- l = [1, 2, 3, 4, 5] new_list = filter(l.

zhaoyangjian724的专栏 3172

JS filter()方法 介绍和使用

filter方法是js中常用的方法; 一,作用; filter用于对数组进行过滤。 它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。 注意:filter()不会对空数组进行检测、不会改变原始数组 二,语法; Array.filter(function(currentValue, indedx, arr), thisValue) 其中,函数 function 为必须,数组中的每个元素都会执行这个函数。且如果返回值为 true,则该元素被保留;   函数的第一个参数 curren

weixin_39501680的博客 13万+

JavaScript Filter函数的实现与应用

filter()函数是JavaScript中一个非常实用的数组方法,它允许我们根据条件过滤数组中的元素,并返回满足条件的新数组。本文通过详细介绍filter()函数的实现原理,并提供了相应的源代码示例,帮助你理解filter()函数的应用。你可以根据自己的需求,使用filter()函数灵活地过滤不同类型的数组。希望本文对你有所帮助!

CyberLynxO的博客 364

js数组高阶函数——filter()方法

上面的例子中,我们筛选words数组中的每一项元素的长度大于6的元素,因为每一个元素都是个单词,是个字符串,字符串也有长度,所以这样也可以过滤出我们想要的。这个例子中,声明一个数组,并过滤,执行的逻辑是一个条件。条件为值大于等于10,也就是说,我们声明了一个数组,并且筛选了数组中每一项大于10的数字。上面这个例子,我们将数组中每一项id为1的筛选出来。后端有SQL语句可以查询,前端也可以通过这样的方式来实现查询,筛选。⭐一般来说,filter() 方法用于过滤数组中的元素,并返回一个新数组。

杜永康的博客 7万+

冷源法测试噪声系数(Noise Figure)详细步骤

背景知识 电阻负载的功率谱密度 噪声等效模型 3 4 冷源法测试步骤 注意事项

eleday的电子世界 6871

差分运放实战:如何快速计算带直流偏置的电路(附详细推导步骤)

本文详细解析了差分运放电路在带直流偏置设计中的核心计算方法和实战技巧。通过可视化参数关系和分步拆解,帮助工程师快速掌握电路设计精髓,包括虚短虚断原理、偏置电压计算及非理想因素处理,提升信号调理和传感器接口设计的效率与精度。

o4p5q6r7s的博客 411

【JavaScript】Map、Reduce 和 Filter - 通过代码示例解释 JS 数组函数

Map、reduce 和 filter 都是 JavaScript 中的数组方法。每个都将迭代一个数组并执行转换或计算。每个函数都会根据函数的结果返回一个新数组。在本文中,您将了解为什么以及如何使用每一个。参考链接:https://www.freecodecamp.org/news/javascript-map-reduce-and-filter-explained-with-examples/

Jerryqjr的博客 2210

避坑指南:Qwen2.5-VL图片预处理中常见的5个尺寸错误

本文深入解析了Qwen2.5-VL模型在图片预处理环节中开发者最常遇到的五个尺寸错误,包括动态分辨率对齐、宽高比超标、像素数限制等问题。文章结合源码解读,详细剖析了`process_vision_info`函数和`resize`逻辑,并提供了具体的排查流程图与参数设置建议,旨在帮助开发者构建健壮的预处理流水线,有效规避显存溢出与推理失败的风险。

weixin_29290379的博客 176

js filter函数

比起传统的for循环,filter函数对于精准查找某对象更便利。 var dataEx = [ { "system":"info", "title":"信发" }, { "system":"base", "title":"基础管理" }, { "system":"aet", "title":"测温门禁考勤" } ] dataEx = dataEx.fil

u012174809的专栏 1312

NOAA气象数据下载攻略

各方搜寻气象数据下载途径,发现网上最多的就是从NOAA下载,但是中途有尝试过很多次都没有下载到,每次都是显示不可用,今天终于下载成功了,特此记录。 首先我是从这个网址进入的:National Centers for Environmental Information (NCEI) formerly known as National Climatic Data Center (NCDC) | NCEI offers access to the most significant archives of oc

lianqian66的博客 3万+

Cocos Creator3.5.2使用Spine切换皮肤

3、然后获取当前spine中是否有皮肤数据,如果spine连皮肤数据都没有,接着写可能会error,这里的 skins[skin],是判断皮肤列表中是否有需要更换的皮肤。2、因为spine往往意味着异步加载,换肤时也经常出现频繁异步的情况,所以下一步我们要可以判断当前spine组件里是否已经加载好了spine文件。换肤前隐藏好需要换肤的节点,避免穿帮;官网文档的换肤流程太简化,对于实际使用来说会有各种各样的问题。1、首先获取对应的spine组件。这里的skin自然是外部传入的需要换肤的皮肤名。

tc654321的博客 1818

js filter 函数使用

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>点击按钮获取数组中大于 18 的所有元素。</p> <button onclick="myFunction()">点我</button> <p id="demo"></p> <p id="arr"></.

qq_22656655的博客 1043

linux下wayland协议修改键盘映射

linux下wayland协议,修改键盘映射,实验环境是Ubuntu24,其他wayland协议窗口应该也是可以的。

qq_15027967的博客 1068

python filter函数的用法_js中filter函数的用法

经过小编讲解的那么多关于JavaScript的内容,你肯定发现数组的使用是最常用也是最简单得了吧。JavaScript数组操作中,有一个功能是过滤筛选,通过这个操作我们可以得出我们真正需要元素,而非复杂多余的影响我们代码使用的元素。本文介绍JavaScript中起到筛选过滤作用的filter函数的具体用法。1、filter函数过滤器函数,用于把Array的某些元素过滤掉,然后返回剩下的元素。2、使...

weixin_33327330的博客 337

ai数字人系统部署

这段代码实现了基本的语音交互闭环,用户通过语音输入问题,数字人识别语音后进行自然语言理解并生成回复,再将回复转换为语音输出。但实际应用中的 AI 数字人系统更为复杂,如形象渲染需专业图形引擎(如 Unity、Unreal Engine),自然语言处理也会涉及更复杂的模型微调及多轮对话管理等。一个完整的 AI 数字人系统涵盖形象生成、自然语言处理、动作控制等多个复杂功能,下面为你提供一个 Python 示例,整合多个库来实现数字人基础功能,包括语音交互、简单的自然语言理解以及通过虚拟形象展示对话。

weixin_ggwwsscc的博客 369

备战2025数学建模国赛(算法29):博弈论在数学建模竞赛中的应用

博弈论为数学建模竞赛提供了强大的分析工具,尤其适用于涉及多方互动决策的问题。本文介绍了博弈论的核心模型、算法实现及竞赛应用案例,并提供了完整的Python代码实现。扩展阅读方向不完全信息博弈与贝叶斯均衡合作博弈与联盟形成机制设计与拍卖理论随机博弈与马尔可夫决策过程博弈论与机器学习的结合。

YOLO 442

JavaScript高阶函数filter、forEach

JavaScript中的高阶函数filter

qq_42774501的博客 1385

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

js的filter函数

这个函数接收数组中的每个元素作为参数,并检查该元素是否是偶数。如果是偶数,函数返回。是一个数组方法,它创建一个新数组,其包含通过提供的函数实现的测试的所有元素。函数遍历数组中的每个元素,并只将那些使测试函数返回。在这个箭头函数版本中,我们直接返回了表达式。在上面的代码中,我们传递了一个匿名函数给。方法就会将该元素包含在新数组中。,则该元素会被包含在新数组中。在JavaScript中,的元素包含在新数组中。

xiaohua0708day的博客 581

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Javascript中的map()函数与filter()函数的区别

1.相似 语法上来看两者相似,都能接受一个回调函数,并作用于调用者。 var arr = [1,2,3,4,5,6]; var mapArr = arr.map(item=>item+=1); var filterArr = arr.filter(item=>item+=1); console.log(mapArr); console.log(filterArr); 2.区别 不同点在于:当回调函数为【布尔函数】时 map()函数会.

FengziTianYu的专栏 1266

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

js中filter函数

1、filter()方法将匹配元素的集合缩减为匹配指定选择器的元素,不会检测空数组,不会改变原数组 2、includes方法用来判断一个数组是否包含一个指定的值,是返回true,不是返回false 3、splice删除功能,第一个参数为第一项位置,第二个参数为要删除几个 4、foreach方法用于调用数组的每个元素,并将元素传递给回调函数,对空数组不会执行回调函数 5、parseInt解析...

weixin_30783913的博客 429

无涯教程-Javascript - filter()函数

JavaScript array.filter()方法满足条件的所有元素集合,返回一个新数组。

无涯教程 971

JavaScript中Array数组的filter()函数的详解

前言 开发中,经常会用到js的Array数组的各种迭代函数map(),filter(),some(),every(),forEach(),find() findIndex(),也是在ES6中新增一些遍历函数。同样是不是也是一道面试题,说说ES6新增的一些新特性???? ✍开始正文filter()函数 ✍一、对filter()函数的定义: filter():通过指定函数处理数组中的每一个元...

能先森的博客 1112

js过滤函数filter()的使用

本文介绍了JavaScript数组的filter()方法的使用。filter()方法通过回调函数筛选数组元素,返回符合条件的新数组而不改变原数组。文章演示了两个示例:1)筛选奇数,通过取模运算判断奇偶性;2)筛选年龄大于18岁的男生,展示了如何对对象数组进行复杂条件筛选。该方法适用于简单和复杂数据类型,无匹配项时返回空数组。

Linlietao0587的博客 507

js 中数组的 filter() 函数的基本使用

js 中数组的 filter() 函数的基本使用

M_emory_的博客 4439
上一篇: webkit-box-orient不见了, webkit 和 autoprefixer 的坑
下一篇: vue for循环出来的数据变成折叠面板
哈哈hyc
博客等级 码龄8年 131粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值