天天看點

js中的fliter(),map(),forEach()方法

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

值,并且不可鍊式調用。典型用例是在一個鍊的最後執行副作用。

繼續閱讀