• 前言

阅读本文之前先来思考一个问题,如何如实现判断一个数组中是否存在满足条件的元素,如何去判断数组中是否全部元素都满足判断条件,这里可能能想到使用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. 掌握 Promise 的逻辑方法

    Promise 是 ES2015 新增的对象 Promise 对象有几个组合方法,可以将多个承诺合并成一个进行处理 分别是 Promise.all, Promise.race, Promise.all ...

  2. 第15.44节、PyQt输入部件:QAbstractSlider派生类QScrollBar滚动条、QSlider滑动条、QDial刻度盘功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 Designer中的输入部件Horizo ...

  3. PyQt(Python+Qt)学习随笔:QTreeView树形视图的headerHiden属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeView树形视图的headerHiden属性用于控制视图中是否隐藏标题,为True隐藏,否 ...

  4. PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的dockOptions属性

    dockOptions属性代表主窗口对浮动部件停靠的反应,其类型为枚举类型QMainWindow.DockOptions.相关取值及含义如下: 这些枚举值可以组合使用,仅控制如何在QMainWindo ...

  5. python-字典dict、去除重复set

    dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例子,假设要根据同学的名字 ...

  6. 【聊技术】在Android中实现自适应文本大小显示

    本周的聊技术话题和大家说说如何在Android中实现自适应文本大小显示. 想象一下,在布局中,通常显示文本的区域大小是固定的,但是文本长度并不总是固定的.比如列表中的文章标题.界面下方的按钮文本等等. ...

  7. Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.

    用pycharm连接mysql报错 改变serverTimezone 改了之后确实可以连接上mysql数据库

  8. Scrum冲刺_Day02

    一.团队展示: 1.项目:light_note备忘录 2.队名:删库跑路队 3.团队成员 队员(不分先后) 项目角色 黄敦鸿 后端工程师.测试 黄华 后端工程师.测试 黄骏鹏 后端工程师.测试 黄源钦 ...

  9. es6交换两个值

    let a='a',b='b' let [a,b]=[b,a];//借助数组解构 let {a:b,b:a}={a,b}//利用别名进行对象解构

  10. 一个小时学会用 Go 编写命令行工具

    前言 最近因为项目需要写了一段时间的 Go ,相对于 Java 来说语法简单同时又有着一些 Python 之类的语法糖,让人大呼"真香". 但现阶段相对来说还是 Python 写的 ...