1. 程式人生 > 實用技巧 >js--陣列的every()和some()方法檢測陣列是否滿足條件的使用介紹

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()使用到的地方比較少,不太常見,需要在學習工作中多家聯絡使用吧!