• 前言

阅读本文之前先来思考一个问题,如何如实现判断一个数组中是否存在满足条件的元素,如何去判断数组中是否全部元素都满足判断条件,这里可能能想到使用for循环遍历数组,if()判断每一项是否符合条件,同样也可以使用forEach()遍历,filter()过滤出满足条件的元素并判断元素个数...这里介绍一下js数组的every和some方法。

  • 正文

1.every()

基本概念:

every() 方法用于检测非空数组中所有元素是否都符合指定条件(通过函数提供),如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。如果所有元素都满足条件,则返回 true。

分析:every方法针对非空数组进行检测,检测条件通过回调函数作为入参传递,返回值为布尔类型true或者false,若每个元素都通过检测才返回true,且该方法不会改变原数组。

一旦找到不符合检测条件的元素就返回false,否则遍历全部元素。

使用语法:

    array.every(function(currentValue,index,array),thisValue)

    接受两个参数,第一个参数为传入的回调函数,该函数又三个参数,currentValue参数必选,为当前检测的元素,index为当前元素的索引,array为当前检测的数组,第二个参数可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。

根据自己的理解先来动手实现上面的功能

    function myEvery(array,rules){
//非空判断
if(array.length==0){
alert('请传入非空数组')
}
let res=true
for (let index = 0; index < array.length; index++) {
if(!rules(array[index])){
res=false
break
}
}
return res
}
var arr=[0,1,2,3,4]
var rules = function(value){
return value > -1 ? true : false
}
console.log(myEvery(arr,rules))//输出true

2.some()

基本概念:

some()方法用于检测数组中的元素是否满足指定条件(函数提供)。如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false。

分析:some()方法针对非空数组进行检测,检测条件通过回调函数作为入参传递,返回值为布尔类型true或者false,若存在任意元素通过检测就参会true,且该方法不会改变原数组。

一旦找到符合条件的就返回true,否则遍历全部元素。

使用语法:

        array.some(function(currentValue,index,array),thisValue)

    接受两个参数,第一个参数为传入的回调函数,该函数又三个参数,currentValue参数必选,为当前检测的元素,index为当前元素的索引,array为当前检测的数组,第二个参数可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。

根据自己的理解先来动手实现上面的功能

        function mySome(array,rules){
if(array.length==0){
alert('请传入非空数组')
}
let res=false
for (let index = 0; index < array.length; index++) {
if(rules(array[index])){
res=true
break
}
}
return res
}
var arr=[0,1,2,3,4]
var rules = function(value){
return value > 3 ? true : false
}
console.log(mySome(arr,rules))//输出true
  • 常见使用

用every和some实现上面同样的效果

        var arr=[0,1,2,3,4]
let res1=arr.every(v=>v>-1)
let res2=arr.some(v=>v>3)
console.log(res1)//输出true
console.log(res2)//输出true

  every()和some()使用到的地方比较少,不太常见,需要在学习工作中多家联系使用吧!

js--数组的every()和some()方法检测数组是否满足条件的使用介绍的更多相关文章

  1. Java 数组的三种创建方法,数组拷贝方法

    public static void main(String[] args) {//创建数组的第一种方法int[] arr=new int[6];int intValue=arr[5];//Syste ...

  2. js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法

    var  questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...

  3. JS 中检测数组的四种方法

    今天和大家分享一下 JS 中检测是不是数组的四种方法,虽然篇幅不长,不过方法应该算是比较全面了. 1. instanceof 方法 instanceof 用于检测一个对象是不是某个类的实例,数组也是一 ...

  4. js -【 数组】判断一个变量是数组类型的几种方法

    怎么判断一个数组是数组呢? 其实这个也是一个常考的题目.依稀记得我为数不多的面试经过中都被问道过. 方案一: instanceof variable instanceof Array 解决思路: 使用 ...

  5. 【js实例】Array类型的9个数组方法,Date类型的41个日期方法,Function类型

    前文提要:[js实例]js中的5种基本数据类型和9种操作符 Array类型的9个数组方法 Array中有9个数组方法: 1.检测数组 2.转换方法 3.栈方法 4.队列方法 5.冲排序方法6.操作方法 ...

  6. js数组去重的几种方法

    1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持 ...

  7. JS数组去重的9种方法(包括去重NaN和复杂数组类型)

    其实网上已经有很多js数组的去重方法,但是我看了很多篇并自己通过代码验证,发现都有一些缺陷,于是在研究多篇代码之后,自己总结了9种方法,如果有哪里不对请及时纠正我哈~ 转载请表明出处 测试代码 let ...

  8. JS高程5.引用类型(3)Array类型-检测数组

    1. instanceof操作符(ECMAScript3) 对于一个网页,或者是一个全局作用域而言,使用instanceof操作符来检测数组就可以得到满意的结果. 语法:if(value instan ...

  9. js数组去重的4种方法

    js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.inde ...

随机推荐

  1. 赶紧收藏吧!MyBatis-Plus万字长文图解笔记,错过了这个村可就没这个店了

    简介 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生 愿景 我们的愿景是成为 MyBatis 最好的搭档 ...

  2. PyQt(Python+Qt)学习随笔:Model/View中的枚举类 Qt.MatchFlag的取值及含义

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 枚举类 Qt.MatchFlag描述在模型中搜索项时可以使用的匹配类型,它可以在QStandardI ...

  3. 第15.3节 PyCharm程序调试功能介绍

    一. 代码调试 点击工具栏的调试按钮(如下图蓝色圈标记按钮)可以进行程序调试,可以在调试前先设置断点,断点设置就是在打开文件的行与前面的行号之间用鼠标单击进行设置和取消(如下图蓝色下划线上面的实体圆点 ...

  4. PyQt学习随笔:截获窗口Widget组件的关闭事件

    在PyQt中,QWidget类对应基础的窗口组件,如果要在窗口组件关闭时截获关闭事件,提供自己的控制机制,则可以通过在自定义的派生类中重写closeEvent方法. 重写closeEvent方法的语法 ...

  5. 第15.12节PyQt(Python+Qt)入门学习:可视化设计界面组件布局详解

    一.引言 在Qt Designer中,在左边部件栏的提供了界面布局相关部件,如图: 可以看到共包含有四种布局部件,分别是垂直布局(Vertical Layout).水平布局(Horizontal La ...

  6. Mac下安装Mesa

    下载Mesa源代码: git clone https://gitlab.freedesktop.org/mesa/mesa.git 如果下载太慢,请参看 下载国外资源. 我下载后看到的Mesa版本信息 ...

  7. 7、Spring Cloud Hystrix

    1.Spring Cloud Hystrix简介 (1).分布式问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败. 多个微服务之间调用的时候,假设微服务A调 ...

  8. Fabric v2.0中的隐私数据

    文章来源于https://hyperledger-fabric.readthedocs.io/en/release-2.0/ 私有数据集在v1.4中提出,一直使用的是隐私数据集方式,即建立一个隐私数据 ...

  9. JWT-配置与使用

    1.jwt的安装配置 . 1.1安装JWT pip install djangorestframework-jwt==1.11.0 1.2 settings.py配置jwt载荷中的有效期设置 # jw ...

  10. 淘宝|蚂蚁|菜鸟|盒马|嘀嘀|饿了么面经(已拿多个offer)

    上一篇的同学拿到了bigo和腾讯的offer,这一次的分享来自两位同学的面试综合,他们分别拿到了菜鸟.嘀嘀.盒马的多个offer,由于面试的时间跨度时间太长,且面试的部门太多,只能回忆到具体的面试题, ...