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()使用到的地方比较少,不太常见,需要在学习工作中多加练习使用吧!以上就是本文的全部内容,希望给读者带来些许的帮助和进步,方便的话点个关注,小白的成长之路会持续更新一些工作中常见的问题和技术点。

posted @ 2021-01-03 16:07  zaisy'Blog  阅读(7829)  评论(0编辑  收藏  举报