前言
閱讀本文之前先來思考一個問題,如何如實現判斷一個數組中是否存在滿足條件的元素,如何去判斷數組中是否全部元素都滿足判斷條件,這里可能能想到使用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()使用到的地方比較少,不太常見,需要在學習工作中多加練習使用吧!以上就是本文的全部內容,希望給讀者帶來些許的幫助和進步,方便的話點個關注,小白的成長之路會持續更新一些工作中常見的問題和技術點。