1 filter():
文法:
var
filteredArray = array.filter(callback[, thisObject]);
參數說明:callback: 要對每個數組元素執行的回調函數。
thisObject : 在執行回調函數時定義的this對象。
1 //過濾掉小于 10 的數組元素:
2
3 //代碼:
4 function isBigEnough(element, index, array) {
5 return (element >= 10);
6 }
7 var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
8 // 12, 130, 44
9 //結果:[12, 5, 8, 130, 44].filter(isBigEnough) : 12, 130, 44
功能說明:
對數組中的每個元素都執行一次指定的函數(callback),并且建立一個新的數組,該數組元素是所有回調函數執行時傳回值為 true 的原數組元素。它隻對數組中的非空元素執行指定的函數,沒有指派或者已經删除的元素将被忽略,同時,新建立的數組也不會包含這些元素。
回調函數可以有三個參數:目前元素,目前元素的索引和目前的數組對象。
如參數 thisObject 被傳遞進來,它将被當做回調函數(callback)内部的 this 對象,如果沒有傳遞或者為null,那麼将會使用全局對象。
filter 不會改變原有數組,記住:隻有在回調函數執行前傳入的數組元素才有效,在回調函數開始執行後才添加的元素将被忽略,而在回調函數開始執行到最後一個元素這一期間,數組元素被删除或者被更改的,将以回調函數通路到該元素的時間為準,被删除的元素将被忽略。
2map()
文法:array.map(callback[, thisArg])
參數:
callback
原數組中的元素經過該方法後傳回一個新的元素。
-
currentValue
-
的第一個參數,數組中目前被傳遞的元素。callback
-
index
-
的第二個參數,數組中目前被傳遞的元素的索引。callback
-
array
-
的第三個參數,調用callback
方法的數組。map
thisArg
執行
callback
函數時
this
指向的對象。
1 //求數組中每個元素的平方根
2 var numbers = [1, 4, 9];
3 var roots = numbers.map(Math.sqrt);
4 /* roots的值為[1, 2, 3], numbers的值仍為[1, 4, 9] */
說明:
map
方法會給原數組中的每個元素都按順序調用一次
callback
函數。
callback
每次執行後的傳回值(包括
undefined
)組合起來形成一個新數組。
callback
函數隻會在有值的索引上被調用;那些從來沒被賦過值或者使用
delete
删除的索引則不會被調用。
3forEach()
array.forEach(callback[, thisArg])
callback
為數組中每個元素執行的函數,該函數接收三個參數:
- currentValue(目前值)
- 數組中正在處理的目前元素。
- index(索引)
- 數組中正在處理的目前元素的索引。
- array
- forEach()方法正在操作的數組。
thisArg
可選可選參數。當執行回調 函數時
用作
this的
值(參考對象)。
function logArrayElements(element, index, array) {
console.log("a[" + index + "] = " + element);
}
// 注意索引2被跳過了,因為在數組的這個位置沒有項
[2, 5, ,9].forEach(logArrayElements);
// logs:
// a[0] = 2
// a[1] = 5
// a[3] = 9
說明:如果
給forEach傳遞了thisArg
參數,當調用時,它将被傳給
callback
函數,作為它的this值。否則,将會傳入
undefined
作為它的this值。callback函數最終可觀察到this值,這取決于 函數觀察到
this
的常用規則。
forEach()
為每個數組元素執行callback函數;不像
map()
或者
reduce()
,它總是傳回
undefined
值,并且不可鍊式調用。典型用例是在一個鍊的最後執行副作用。