js中map()、some()、every()、filter()的区别
js的Array对象有map、some、every、filter几个方法都能对数组中的每个对象进行处理,但是他们之间的功能又各有差别,所以在记下。
- map():通过指定函数处理数组的每个元素,并返回处理后的数组。
1 var numbers = [4, 9, 16, 25];
2
3 function myFunction() {
4 console.log(numbers.map(Math.sqrt));
5 }
输出结果为:
2,3,4,5
map() 方法会将数组中元素依次传入方法中,并将方法的返回结果组成新数组返回。
传入的function可以有自己的三个形参,currentValue, index,arr分别代表当前元素,元素索引,元素所属数组对象;其中currentValue是必须的。
注意:map不会改变原数组,map不会检查空数组
- some():用于检测数组中的元素是否满足指定条件(函数提供)

1 var ages = [3, 10, 18, 20];
2
3 function checkAdult(age) {
4 return age >= 18;
5 }
6
7 function myFunction() {
8 console.log(ages.some(checkAdult));
9 }

输出为:true
some方法会依次执行数组的每个元素;
- 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测
- 如果没有满足条件的元素,则返回false
- function形参和map一样
注意:some不会改变原数组,some不会检查空数组
- every:用于检测数组所有元素是否都符合指定条件(通过函数提供)

1 var ages = [32, 33, 16, 40];
2
3 function checkAdult(age) {
4 return age >= 18;
5 }
6
7 function myFunction() {
8 console.log(ages.every(checkAdult));
9 }

输出结果:false
every和some正好相反:
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
- function形参同上
注意:some不会改变原数组,some不会检查空数组
- filter:创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素

1 var ages = [32, 33, 16, 40];
2
3 function checkAdult(age) {
4 return age >= 18;
5 }
6
7 function myFunction() {
8 console.log(ages.filter(checkAdult));
9 }

输出结果:
1
|
32,33,40 |
filter会根据函数中的筛选条件将返回的结果组成一个新的数组并返回
js中map()、some()、every()、filter()的区别的更多相关文章
- 【前端】js中new和Object.create()的区别
js中new和Object.create()的区别 var Parent = function (id) { this.id = id this.classname = 'Parent' } Pare ...
- JS中的== 、===的用法和区别。
JS中的== .===的用法和区别.[转] == 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 . 而 === 和 !== 只有在相同类型下,才会比较其值 ======= ...
- JS中三目运算符和if else的区别分析与示例
本文是通过示例详细分析了JS中三目运算符和if else的区别,是篇非常不错的文章,这里推荐给大家. 今天写了一个图片轮播的小demo,用到了判断 先试了一下if else,代码如下: 复制代码代 ...
- js中callback.call()和callback()的区别
js中callback.call()和callback()的区别在js中callback.call()和callback() 有什么区别,举个例子:function a(){alert('hello! ...
- 网站开发进阶(二十)JS中window.alert()与alert()的区别
JS中window.alert()与alert()的区别 前言 alert与window.alert没什么区别,如果有人觉得有区别,那就来解释一下:所有以window.开始的语句,都可以直接把wind ...
- Js中Map对象的使用
Js中Map对象的使用 1.定义 键/值对的集合. 2.语法 mapObj = new Map() 3.备注 集合中的键和值可以是任何类型.如果使用现有密钥向集合添加值,则新值会替换旧值. 4.属性 ...
- JS中==、===和Object.is()的区别
JS中==.===和Object.is()的区别 首先,先粗略了解一下这三个玩意儿: ==:等同,比较运算符,两边值类型不同的时候,先进行类型转换,再比较: ===:恒等,严格比较运算符,不做类型转换 ...
- 项目中一次排序规则的改动,注意到js中map的遍历的顺序
背景:项目需要对前端页面上某个插件的下拉选择项进行排序,需要按照配置的顺序显示. 首先调查后台,发现sql语句中已经添加order by.之后发现查询结果遍历后封装进HashMap,这里改为LinkH ...
- JS中map与forEach的区别
很多同学可能对于map与forEach的区别不是太了解,今天我们介绍一下JS中的map与forEach方法, 我对map的理解是,这个方法对一个数组arr1中的每一个元素进行遍历(传递给一个数组,参数 ...
- js中map和python中的map
js 中的map: 由于map()方法定义在JavaScript的Array中,我们调用Array的map()方法,传入我们自己的函数,就得到了一个新的Array作为结果: function pow( ...
随机推荐
- windows:shellcode 远程线程hook/注入(五)
前面几篇文章介绍了通过APC注入.进程注入.windows窗口处理函数回调.kernercallback回调执行shellcode,今天继续介绍通过heap Spray(翻译成中文叫堆喷射)执行she ...
- win10 安装tensorflow2.0 GPU版本遇到的坑
背景:我的机器上tensorflow 1.14 & 2.0,这俩版本都有,之前都是用1.14版本,今天试一下2.0尝尝鲜, 结果就掉坑去了 把CUDA10.1 和 cudnn 安装 ...
- ios迅雷上架成功的秘密 背后的“苹果TF签名”
距离ios迅雷从App Store下架已经过去很久了,小微经常看到知乎里有很多迅雷用户到处寻找可以下载应用的渠道.近期迅雷被爆“好消息”iOS 迅雷(官方版)正式上架 App Store,此消息一出可 ...
- 使用QT实现一个简单的登陆对话框(纯代码实现C++)
使用QT实现一个简单的登陆对话框(纯代码实现C++) 效果展示 使用的QT控件 控件 描述 QLable 标签 QLineEdit 行文本框 QPushButton 按扭 QHBoxLayout 水平 ...
- 2020-06-13:Redis底层数据结构?
福哥答案2020-06-13: 福哥口诀法:简链字跳整 压快压 SDS simple synamic string:简单动态字符串.支持自动动态扩容的字节数组 .list :链表 .双端链表.dict ...
- 2020-04-05:谈一下spring事务传播
- C#设计模式之15-解释器模式
解释器模式(Interpreter Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/415 访问. 解释 ...
- 从零开始,Windows操作系统下的超详细的阿里云发布项目过程
==================== 步骤0: 购买阿里云服务器 ==================== 0.1 从来没有搞过外网部署的我,当然是先买服务器了,感谢很多小伙伴的帮忙 0.2 登录 ...
- Oracle数据库启动及状态等查询
一.监听 1)启动监听: lsnrctl start 2)查看监听状态: lsnrctl status 3)停止监听: lsnrctl stop 4)检查是否可进行网络连接: tnsping ${si ...
- CSS动画实例:一颗躁动的心
在页面中放置一个类名为container的层作为盛放心心的容器,在该层中再定义一个名为heart的子层,HTML代码描述如下: <div class="container"& ...