js--数组的every()和some()方法检测数组是否满足条件的使用介绍
- 前言
阅读本文之前先来思考一个问题,如何如实现判断一个数组中是否存在满足条件的元素,如何去判断数组中是否全部元素都满足判断条件,这里可能能想到使用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()方法检测数组是否满足条件的使用介绍的更多相关文章
- Java 数组的三种创建方法,数组拷贝方法
public static void main(String[] args) {//创建数组的第一种方法int[] arr=new int[6];int intValue=arr[5];//Syste ...
- js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法
var questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...
- JS 中检测数组的四种方法
今天和大家分享一下 JS 中检测是不是数组的四种方法,虽然篇幅不长,不过方法应该算是比较全面了. 1. instanceof 方法 instanceof 用于检测一个对象是不是某个类的实例,数组也是一 ...
- js -【 数组】判断一个变量是数组类型的几种方法
怎么判断一个数组是数组呢? 其实这个也是一个常考的题目.依稀记得我为数不多的面试经过中都被问道过. 方案一: instanceof variable instanceof Array 解决思路: 使用 ...
- 【js实例】Array类型的9个数组方法,Date类型的41个日期方法,Function类型
前文提要:[js实例]js中的5种基本数据类型和9种操作符 Array类型的9个数组方法 Array中有9个数组方法: 1.检测数组 2.转换方法 3.栈方法 4.队列方法 5.冲排序方法6.操作方法 ...
- js数组去重的几种方法
1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持 ...
- JS数组去重的9种方法(包括去重NaN和复杂数组类型)
其实网上已经有很多js数组的去重方法,但是我看了很多篇并自己通过代码验证,发现都有一些缺陷,于是在研究多篇代码之后,自己总结了9种方法,如果有哪里不对请及时纠正我哈~ 转载请表明出处 测试代码 let ...
- JS高程5.引用类型(3)Array类型-检测数组
1. instanceof操作符(ECMAScript3) 对于一个网页,或者是一个全局作用域而言,使用instanceof操作符来检测数组就可以得到满意的结果. 语法:if(value instan ...
- js数组去重的4种方法
js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.inde ...
随机推荐
- C#数据结构-二叉树-链式存储结构
对比上一篇文章"顺序存储二叉树",链式存储二叉树的优点是节省空间. 二叉树的性质: 1.在二叉树的第i层上至多有2i-1个节点(i>=1). 2.深度为k的二叉树至多有2k- ...
- PyQt(Python+Qt)学习随笔:Designer中不能编辑信号和槽的问题
新建了一个窗口部件,在窗口上添加了相关布局,再设置窗口窗口的布局为垂直布局,窗口设计好界面后如图所示: 可以看到窗口是QWidget类,窗口上从上到下有三个布局,窗口自身的布局为垂直布局,布局名为ve ...
- Java数据结构(十五)—— 多路查找树
多路查找树 二叉树和B树 二叉树的问题分析 二叉树操作效率高 二叉树需要加载到内存,若二叉树的节点多存在如下问题: 问题1:构建二叉树时,需多次进行I/O操作,对与速度有影响 问题2:节点海量造成二叉 ...
- Linux下netstat命令简单操作
netstat -t :TCP协议 -u :UDP协议 -l :监听 -r :路由 -n :显示IP地址和端口号 常用: netstat -tlun 查看本机监听的端口 netstat -an 查看本 ...
- CTF写脚本
今天总结一下CTF如何写脚本快速得分....(比较菜,能力有限,大佬勿喷) 所谓的写脚本得分,就是利用了 python爬虫的思想,如果之前没有听说过的话,可以去爬虫的相关语法.如果是看网上的视频的话, ...
- javascript是面向对象的,怎么体现javascript的继承关系?
一个简单的例子: var A =function(){ } A.prototype = { v : 5, tmp : 76, echo : function(){console.log(this.tm ...
- bootstrap table 嵌入百分比进度条
- vue优点
低耦合.视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View ...
- 题解-CF163E e-Government
题面 CF163E e-Government 给 \(n\) 个字符串 \(s_i\) 和 \(q\) 个询问,刚开始字符串都服役.每次操作将集合中的一个字符串设为退役或服役,或查询与文本串 \(S_ ...
- rbd锁引起kvm虚拟机无法启动的故障
前言 环境因为一些问题(网络,或者磁盘,或者其它各种异常),引起了集群的状态的一些变化,变化之后,集群的某些虚拟机正常某些虚拟机出现异常,异常现象就是无法启动 特别是win server2008 ,会 ...