JQuery 操做數組 each、map、grep、filter

Jquery中對數組的操做大體有一下幾種形式:
一、$.each( collection, callback(indexInArray, valueOfElement) )
$.each()函數和$(selector).each()不同。$.each()函數能夠用來遍歷任何一個集合,無論是一個JavaScript對象或者是一個數組,若是是一個數組的話,回調函數每次傳遞一個數組的下標和這個下標所對應的數組的值(這個值也能夠在函數體中經過this關鍵字獲取,可是JavaScript一般會把this這個值看成一個對象即便他只是一個簡單的字符串或者是一個數字),這個函數返回所遍歷的對象,也就是這個函數的第一個參數,注意這裏仍是原來的那個數組,這是和map的區別。
其中collection表明目標數組,callback表明回調函數(本身定義),回調函數的參數第一個是數組的下標,第二個是數組的元素。固然咱們也能夠給回調函數只設定一個參數,這個參數必定是下標,而沒有參數也是能夠的。
下面舉個例子:
var mem = ['a','b','c'];
var returnvalue = $.each(mem, function(index) {
    alert(index);
});

var mem = ['a','b','c'];
var returnvalue = $.each(mem, function(index,value) {
    alert(index + " " + value);
});

var mem = ['a','b','c'];
var returnvalue = $.each(mem, function() {
});

二、$.map( array, callback(elementOfArray, indexInArray) )
$.map()這個函數和each很是的類似,最重要的區別就是map是用來生成一個新的數組,也就是說咱們能夠在回調函數中修改遍歷到的每個元素(經過return返回新的值,不return就沒有值了),最後返回一個新的數組。
參數方面和each基本沒有什麼區別,很少作解釋。
下面舉個例子:
var arr = [ "a", "b", "c", "d", "e" ];
var arr2 = jQuery.map(arr, function(n, i){
    return (n.toUpperCase() + i);
});
alert(arr);
alert(arr2);    
程序執行後的結果爲:
a,b,c,d,e
A0,B1,C2,D3,E4

三、$.grep( array, function(elementOfArray, indexInArray) [, invert] )
$.grep()函數除去了不須要的元素,起到了一個篩選的做用,經過將它的元素經過一個測試函數,也就是grep()的第二個參數,須要注意的是這裏參數和前面兩個函數的回調函數的參數順序相反。經過這兩個參數來控制本身須要哪些元素,經過return語句返回出來(return true說明這個元素是須要的)。另外,在grep()中能夠經過正則表達式(return elementOfArray.match(正則表達式))來控制篩選,這樣能使篩選更加的靈活、強大。grep()函數和map()函數同樣也是生成一個新的數組。grep()中的第三個參數是一個布爾數一般是省略的,默認是false,若是設置爲true,那麼回調函數的返回值的效果恰好相反,返回true的會被去掉。
下面舉個例子:
var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ];
arr = jQuery.grep(arr, function(n, i){
  return (n != 5 && i > 4);
});正則表達式

 

四、filter (fn) 參數是函數;數組

相關文章
相關標籤/搜索