JS陣列學習之判斷陣列元素是不是都滿足給定條件

amadan發表於2021-09-11
在上一篇文章《》中,我們介紹了遍歷陣列,對陣列中每個元素進行處理的方法。這次繼續聊聊陣列的遍歷,介紹一下檢測陣列元素是否全部符合指定條件的幾種方法,有需要的朋友可以學習瞭解一下~

那麼如何判斷陣列中元素是否滿足指定條件?例如遍歷陣列,檢查陣列中元素是否都為偶數,這要怎麼操作?

下面我們來介紹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的值就能知道陣列中元素是否都為偶數:如果b>0則都是偶數;如果b=0則不全為偶數。

因為陣列中元素5不是偶數,因此輸出結果為:

1.png

方法2:利用some()方法

some()方法可以檢測陣列中是否存在符合條件的元素。換個角度思考,也可以用來檢測陣列中的所有元素是否都不符合指定條件,都不符合的話就返回 false,有一個或者多個符合的話就返回 true。(和上文程式碼是一個思路)

array.some(function callbackfn(Value,index,array),thisValue)

function callbackfn(value,index,array):一個回撥函式,不可省略,最多可接受三個引數:

  • 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("都是偶數");
}

可以看出:因為陣列中元素都是偶數,因此輸出結果為:

5.png

我們將陣列元素12改為11,則輸出結果為:

6.png

方法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。

好了,就說到這裡了,有需要的可以看:

以上就是JS陣列學習之判斷陣列元素是不是都滿足給定條件的詳細內容,更多請關注php中文網其它相關文章!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2310/viewspace-2827354/,如需轉載,請註明出處,否則將追究法律責任。

相關文章