Array.filter()過濾陣列元素
- 詳細內容
- 分類:Javascript
- 發佈:2013-03-04, 週一 13:58
- 點擊數:3133
Javascript的Array.filter()方法:
Array.filter()方法會過濾陣列的元素,並將通過測試的元素傳回成為一個新陣列。
Array.filter()方法使用回呼函式來對元素進行過濾,須由設計師自行撰寫過濾程式。
除了被刪除或是未給定初始值的元素外,filter()方法會為每一個陣列元素呼叫一次回呼函式以進行測試。
filter()方法只對呼叫filter()當時的陣列元素進行過濾,往後新增的元素並不影響結果。
filter()方法也不改變現有陣列,只是傳回新的陣列。
此方法出現在ECMA-262第五版中,因此可能會有些瀏覽器並不支援這方法。
若要確保在所有瀏覽器中都能正確執行,可在原型中自行定義此方法。
Array.filter()的語法:
array.filter( callbackfn [ , thisArg ] )
callbackfn:回呼函式,用來測試陣列中的元素,需由設計師自行撰寫,
callbackfn有三個傳入值element、index、array,
element:測試元素的值。
index:測試元素索引。
array:測試的陣列。
測試通過則傳回true,失敗則傳回false。
thisArg:callbackfn中的this代表的物件,如果省略則callbackfn中的this代表全域物件。
Array.filter()的範例:
將陣列中偶數留下:
<script type="text/javascript">
var Arr1=[1,2,3,4,5,6,7,8,9,10];
function even(element, index, array){
if (element%2 ==0) {
return true;
}
else {
return false;
}
}
var Arr2=Arr1.filter(even);
document.writeln(Arr2);
</script>
Array.filter()的範例輸出:
2,4,6,8,10
在原型中新增Array.filter()方法:
Array.filter()方法是ECMS-262中的標準方法,但並非所有瀏覽器都支援,
為確保在所有瀏覽器中都能正確執行,可自行在原型中定義該方法。
下面是MDN 中 Array filter method 提供的程式,將其放入script的開頭:
if (!Array.prototype.filter){
Array.prototype.filter = 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 res = [];
var thisp = arguments[1];
for (var i = 0; i < len; i++) {
if (i in t) {
var val = t[i]; // in case fun mutates this
if (fun.call(thisp, val, i, t))
res.push(val);
}
}
return res;
};
}
關於Array物件的其他屬性與方法,請參考:陣列物件 Array。
按個讚!~支持本站!~
你可能會有興趣的文章
- 關聯式陣列
- for in 列舉陣列(Array)的危險陷阱
- Array.valueOf()傳回原始值
- Array.unshift()新增元素並傳回陣列長度
- Array.toString()傳回陣列元素字串
- Array.splice()加入移除陣列元素