Array.every()測試所有陣列元素

Javascript的Array.every()方法:

Array.every()方法利用回呼函式測試陣列元素中所有的元素,

其中不包含被刪除的元素,或是未被給定初始值得元素若是初始值給定undefined 依然會呼叫回呼函式進行測試。

當所有元素都都通過回呼函式測試時,every()方法返回true,若有任一個元素不符合則返回false。

也就是說every()方法在遇到第一個不符合的元素時,就會立即返回false,而不再對後面的元素進行測試。

要注意的一點是不管測試函式怎麼寫,若陣列本身是空陣列,那every()方法必然會返回true。

every()方法出現在ECMA-262第五版中,因此可能會有些瀏覽器並不支援這方法。

若要確保在所有瀏覽器中都能正確執行,可在原型中自行定義此方法。

Array.every()的語法:

array.every( callbackfn [ , thisArg ] )

callbackfn:回呼函式,用來測試陣列中的元素,需由設計師自行撰寫,

                     callbackfn有三個傳入值element、index、array,

                     element:測試元素的值。

                     index:測試元素索引。

                     array:測試的陣列。

                     測試通過則傳回true,失敗則傳回false。

thisArg:callbackfn中的this代表的物件,如果省略則callbackfn中的this代表全域物件。

Array.every()的範例:

<script type="text/javascript">
function bigerthan10(element, index, array) {
  return (element >= 10);
}
var arr = [1,2,3,4,5,6,7,8,9,10];
document.writeln("陣列1元素是否全部>=10:"+arr.every(bigerthan10));
document.writeln("<br/>");
var arr2 = [10,20,30,40,50,60,70,80,90,100];
document.writeln("陣列2元素是否全部>=10:"+arr2.every(bigerthan10) );
</script>

Array.every()的範例輸出:

陣列1元素是否全部>=10:false
陣列2元素是否全部>=10:true 

在原型中新增Array.every()方法:

Array.every()方法是ECMS-262中的標準方法,但並非所有瀏覽器都支援,

為確保在所有瀏覽器中都能正確執行,可自行在原型中定義該方法。

下面是MDN中Array every method提供的程式,將其放入<script>的開頭:

if (!Array.prototype.every)
{
  Array.prototype.every = function(fun /*, thisp */)
  {
    "use strict";
    if (this == null)
      throw new TypeError();
    var t = Object(this);
    var len = t.length >>> 0;
    if (typeof fun != "function")
      throw new TypeError();
    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in t && !fun.call(thisp, t[i], i, t))
        return false;
    }
    return true;
  };
}

關於Array物件的其他屬性與方法,請參考:陣列物件 Array

 
 

  按個讚!~支持本站!~

FB推薦載入中  

你可能會有興趣的文章