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

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

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

丶Serendipity丶   2021-01-03 我要评论
  • 前言

阅读本文之前先来思考一个问题,如何如实现判断一个数组中是否存在满足条件的元素,如何去判断数组中是否全部元素都满足判断条件,这里可能能想到使用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()使用到的地方比较少,不太常见,需要在学习工作中多家联系使用吧!

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们