在上一篇文章《JS數組學習之遍歷數組,將元素值全部擴大一倍》中,我們介紹了遍歷數組,對數組中每個元素進行處理的方法。這次繼續聊聊數組的遍歷,介紹一下檢測數組元素是否全部符合指定條件的幾種方法,有需要的朋友可以學習了解一下~
那麼如何判斷數組中元素是否滿足指定條件?例如遍歷數組,檢查數組中元素是否都為偶數,這要怎麼操作?
下面我們來介紹3種方法,先從熟悉的for迴圈開始,然後介紹2種內建函數--看看用它們來怎麼偵測。
方法1:利用for迴圈
實作想法:
利用for語句來遍歷陣列
for(var i=0;i<a.length;i++){ }
檢查數組中元素是否都為偶數,反過來:只要有一個不是偶數,那麼可以得到「不全為偶數」。
因此實作程式碼可以這麼寫:
var a = [2,4,5,6,8],b=0; for(var i=0;i<a.length;i++){ if (a[i] % 2 != 0) { b=0 break; }else{ b++; } } if (b) { console.log("都是偶数"); } else { console.log("不全为偶数"); }
分析程式碼:
b賦值為0,如果數組元素為偶數,b就自增1;當有一個數組元素不是偶數,b的值就又重新變為0,並且使用“break;”退出循環。
b>0則都是偶數;如果
b=0則不全為偶數。
some()方法可以偵測陣列中是否有符合條件的元素。換個角度思考,也可以用來偵測數組中的所有元素是否都不符合指定條件,都不符合的話就回傳 false,有一個或多個符合的話就回傳 true。 (和上文程式碼是個想法)
array.some(function callbackfn(Value,index,array),thisValue)function callbackfn(value,index,array)
:一個回呼函數,不可省略,最多可接受三個參數:
function f(value, index, ar) { if (value % 2 != 0) { return true; } } var a = [2,4,6,8,10,12]; var b = a.some(f); if (b) { console.log("不全为偶数"); } else { console.log("都是偶数"); }
可以看出:因為陣列中元素都是偶數,因此輸出結果是:
我們將陣列元素12改為11,則輸出結果為:
#方法3:使用every()方法every()方法可以偵測陣列元素是否全部符合指定條件。語法如下,參數取值情況可參考上文some() 方法
array.every(function callbackfn(Value,index,array),thisValue)
我們來看看實作程式碼:
function f(value, index, ar) { if (value % 2 == 0) { return true; }else { return false; } } var a = [2,4,6,8,10,11]; var b = a.every(f); if (b) { console.log("都是偶数"); } else { console.log("不全为偶数"); }
輸出結果為:
不全为偶数# every()和some() 方法的區別:
只有當數組中的所有元素都滿足條件時,every() 才會傳回true;只要數組中有一個元素滿足條件,some( ) 就回傳true。
好了,就說到這裡了,有需要的可以看:
javascript影片教學以上是JS數組學習判斷數組元素是不是都滿足給定條件的詳細內容。更多資訊請關注PHP中文網其他相關文章!