Array.some()檢查是否有任一陣列元素通過測試

Javascript的Array.some()方法:

Array.some()方法會呼叫回呼函式來對陣列中所有的元素進行測試,若是有任何一個元素測試通過,

則立即返回true,不再對其他元素進行測試。

對於被刪除的索引,或是未被指定初始值得元素,some()方法並不會為其呼叫回呼函式進行測試。

some()方法定義在ECMA-262第五版中,可能會有些瀏覽器不支援此方法。

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

Array.some()的語法:

array.some( callbackfn [ , thisArg ] )

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

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

                     element:測試元素的值。

                     index:測試元素索引。

                     array:測試的陣列。

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

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

Array.some()的範例:

<script type="text/javascript">
function islessthan10(element, index, array) {
  document.writeln(index);
  return (element < 10);
}
var myArray1 = [1,2,3,4,5,6,7,8,9,10];
document.writeln("陣列1中呼叫回呼函式的陣列索引:");
document.writeln("<br/>陣列1元素中是否有小於10的值<10:"+myArray1.some(islessthan10));
document.writeln("<br/>");
var myArray2 = [10,20,30,40,50,60,70,80,90,100];
myArray2[10]=undefined;
myArray2[100]=undefined;
document.writeln("陣列2中呼叫回呼函式的陣列索引:");
document.writeln("<br/>陣列2元素中是否有小於10的值<10:"+myArray2.some(islessthan10) );
</script>

Array.some()的範例輸出:

陣列1中呼叫回呼函式的陣列索引: 0
陣列1元素中是否有小於10的值<10:true
陣列2中呼叫回呼函式的陣列索引: 0 1 2 3 4 5 6 7 8 9 10 100
陣列2元素中是否有小於10的值<10:false 

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

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

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

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

if (!Array.prototype.some)
{
  Array.prototype.some = 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 true;
    }
    return false;
  };
}

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

 
 

  按個讚!~支持本站!~

FB推薦載入中  

你可能會有興趣的文章