es6中map()、some()、every()、filter()的区别

ES的Array对象有map、some、every、filter几个方法都能对数组中的每个对象进行处理,但是他们之间的功能又各有差别

  • map():通过指定函数处理数组的每个元素,并返回处理后的数组。
 var numbers = [4, 9, 16, 25];
  
 function myFunction() {
     console.log(numbers.map(Math.sqrt));
}

输出结果为:

2,3,4,5

注意
map() 方法会将数组中元素依次传入方法中,并将方法的返回结果组成新数组返回。

传入的function可以有自己的三个形参,currentValue, index,arr分别代表当前元素,元素索引,元素所属数组对象;其中currentValue是必须的。

map不会改变原数组,map不会检查空数组

  • some():用于检测数组中的元素是否满足指定条件(函数提供)
var ages = [3, 10, 18, 20];

function checkAdult(age) {
    return age >= 18;
}

function myFunction() {
    console.log(ages.some(checkAdult));
}

输出为:true

some方法会依次执行数组的每个元素;

如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测
如果没有满足条件的元素,则返回false
function形参和map一样
注意:some不会改变原数组,some不会检查空数组

  • every:用于检测数组所有元素是否都符合指定条件(通过函数提供)
var ages = [32, 33, 16, 40];

function checkAdult(age) {
    return age >= 18;
}

function myFunction() {
    console.log(ages.every(checkAdult));
}

输出结果:false

every和some正好相反:

如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。
function形参同上
注意:some不会改变原数组,some不会检查空数组

  • filter:创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
var ages = [32, 33, 16, 40];

function checkAdult(age) {
    return age >= 18;
}

function myFunction() {
    console.log(ages.filter(checkAdult));
}

输出结果:

32,33,40

filter会根据函数中的筛选条件将返回的结果组成一个新的数组并返回

热门文章

暂无图片
编程学习 ·

sqlserver:临时表的删除

遇到一个坑: 某天,定时作业失败了多次,但代码没变动,这就奇了怪了。。 结果:经检查,每次执行的时候,临时表若存在,就会失败。 分析:当初不写删除临时表,是查询了临时表的定义,会话内自动结束,不知道是哪出现了问题。 解决: if OBJECT_ID(tempdb..#tempList) is no…
暂无图片
编程学习 ·

mogodb日常工作记录

查询相关 db.getCollection(Examda_News_VisitLog).find({"newsId":"20061109480192959"})db.getCollection(Examda_News_VisitLog).find({"from":"xcx","share":{"$gt":0}}).limit(10); # status: "A"…
暂无图片
编程学习 ·

php编写的旅游网站

使用PHP编写一个简单的旅游网站! wampserver集成环境编写php+mysql使用最新的Bootstrap(v4.5.0)框架详细的前端功能详细的用户后台管理具体又详细的文件上传函数文件提取链接:https://pan.baidu.com/s/1EeS4o4FnoSWLQ8f_oFg0CQ 提取码:idqm
暂无图片
编程学习 ·

吐血整理各种二叉树(BST、AVL、Red Black、B、B+)

前言 没有必要过度关注二叉树的增删改导致的结构改变,规则操作什么的了解一下就好,看不下去就跳过,本文过多的XX树操作图片纯粹是为了作为规则记录,该文章主要目的是增强下个人对各种常用XX树的设计及缘由的了解,也从中了解到常用的实现案例使用XX树实现的原因。 数据在计…
暂无图片
编程学习 ·

PHP字符串函数vsprintf(返回格式化字符串)

在PHP中,字符串函数 vsprintf() 返回格式化字符串。函数语法:vsprintf ( string $format , array $args ) : string函数参数说明:参数描述format必需。规定字符串以及如何格式化其中的变量。可能的格式值:%% - 返回一个百分号 %%b - 二进制数%c - ASCII 值对应的字符%d - 包…
暂无图片
编程学习 ·

阿里云香港云服务器ECS适合什么场景?

香港云服务器有什么好处?适合什么场景呢?许多对于不想备案的用户,那么香港节点最为合适不过了。因此,笔者整理阿里云香港服务器优惠购买流程以及列出香港服务器的好处!阿里云香港服务器:目前阿里云优惠活动中,限时云服务器爆款2折有推出香港节点突发性t5实例 固定配置1核…
暂无图片
编程学习 ·

自定义控件三部曲之动画篇(三)—— 代码生成alpha、scale、translate、rotate、set及插值器动画

一、概述前两篇,我为大家讲述了利用XML来定义动画及插值器,但在代码中,我们常常是动态生成动画的,所以,这篇将为大家讲述如何用代码生成动态生成动画及插值器。先简单写出各个标签对应的类,方便大家理解:scale —— ScaleAnimationalpha —— AlphaAnimationrotate ——…
暂无图片
编程学习 ·

redis 缓存击穿,穿透,雪崩及解决方案

一、前言在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会…
暂无图片
编程学习 ·

手动连接线上presto

命令如下: java -jar presto-cli-0.237-executable.jar --server https://presto.ludp.lenovo.com:30070 --catalog hive --truststore-path /opt/jdk1.8.0_25/jre/lib/security/keystore.jks --truststore-password changeit在之前可以先测试一下网络 ping presto.ludp.lenov…
暂无图片
编程学习 ·

spring @Primary-@Qualifier在spring中的使用

在spring 中使用注解,常使用@Autowired, 默认是根据类型Type来自动注入的。但有些特殊情况,对同一个接口,可能会有几种不同的实现类,而默认只会采取其中一种的情况下 @Primary 的作用就出来了。下面是个简单的使用例子。 有如下一个接口 public interface Singer {String …
暂无图片
编程学习 ·

Android 8.0 蓝牙遥控器自动配对

本文要实现的是在 android 8.0 的平台上,蓝牙遥控器与TV自动配对,具体就是在TV端打开配对界面,TV端开始搜索远程蓝牙设备,按下遥控器按键让蓝牙遥控器进入对码模式,此时蓝牙遥控器就能作为一个远程蓝牙设备被发现,TV端扫描到这个远程蓝牙设备(蓝牙遥控器),就会自动进行…
暂无图片
编程学习 ·

mysql服务无法启动,报服务正在启动或停止中,请稍后片刻再试一次

这个错误我尝试了网上好多得方法最后只能卸载重装是最简单得。 于是我后面就是卸载重装了。后面就不上图了。希望有朋友碰到这个问题能给我一个解决方法。 在这里特此说明,我写得所有博客都是小编自己实际操作得。碰到得问题记录和写下解决方法得。小编也验证了很多网上别人得…
暂无图片
编程学习 ·

MySQL - 基础语法

MySQL - 基础语法 SQL Structured Query Language:结构化查询语言 定义了了操作所有关系型数据库的规则 SQL 通用语法SQL 语句可以单行或多行书写,以分号结尾 可使用空格和缩进来增强语句的可读性 MySQL 数据库的SQL语句不区分大小写,关键字建议大写 注释:单行注释:-- 注释…
暂无图片
编程学习 ·

浙江工业大学计算机技术专业考研经验分享帖

浙江工业大学复试经验分享自我介绍初试复习复试流程复试感想心态分享 自我介绍我,本科双非二本,软件工程专业,大学四年学业成绩在专业前十,拿过奖学金,参加过一些没啥含金量的比赛,不爱且不怎么会敲代码。就这样一个平凡的我决定考研了,考虑到地理,专业等因素,我将浙江…
暂无图片
编程学习 ·

目标检测算法R-CNN系列之Faster R-CNN

Faster R-CNN是在Fast R-CNN的基础上做了进一步的改进,主要解决的问题就是候选框的生成,通过使用anchor box机制,大大的提高了检测的速度以及效果。有关R-CNN以及Fast R-CNN可以点击链接,进行了解。下面将详细的介绍Faster R-CNN目标检测算法。1、网络架构 从上图中…
暂无图片
编程学习 ·

python3安装OpenCV3出现:ImportError: numpy.core.multiarray failed to import

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是…
暂无图片
编程学习 ·

mssql server数据库日志清理

ERP的数据库运行一段时间后会增加的很大,主要是数据库的日志文件增大较多,以金蝶K3为例,可以执行以下语句清理数据库的日志文件。 USE [master] GO ALTER DATABASE AIS20141013114943 SET RECOVERY SIMPLE WITH NO_WAIT ---database后为数据库名 GO ALTER DATABASE AIS20141…
暂无图片
编程学习 ·

面试常问题:为什么要使用MQ消息中间?

在面试大型互联网公司的时候,很可能会被问到消息队列的问题:1.在何种场景下使用了消息中间件?2.为什么要在系统里引入消息中间件?3.如何实现幂等? 链式调用是我们在写程序时候的一般流程,为了完成一个整体功能,会将其拆分成多个函数(或子模块),比如模块A调用模块B,模…