2012-02-05 47 views
2

我發現this例如,上面寫着:理解jQuery的地圖

var arr=$.map([0,1,2],function(n){ 
    return [n,n+1]; 
}); 

將使arr 6項數組。但是,我不明白爲什麼它不是[[x,y],[x,y],[x,y]]

我需要逐步瞭解剛剛發生的事情。這個map函數看起來非常有用,我不願意僅僅因爲我不瞭解它的行爲而使用它。

+0

您是否正在尋找一個超出*數組值的數組,該數組將被展平成完整數組*,存在於該頁中? – lonesomeday 2012-02-05 23:04:40

回答

4

$.map變平返回的數組:

甲返回的數組將被展平到所得到的數組。

來源:http://api.jquery.com/jQuery.map/

+0

不能相信我錯過了......呃,我想在閱讀時聽Metallica時會失去一些焦點。編輯:我會接受像40分鐘內的答案,我真的必須去 – mithril333221 2012-02-05 23:08:07

+0

@ mithril333221一個人會失去生活的意願它是*聖。憤怒*;) – alex 2012-02-05 23:08:46

2

您可以雙擊包裹返回的數組,以避免扁平輸出。

var arr=$.map([0,1,2],function(n){ 
    // v--------------v----- flattened 
    return [ [ n, n + 1 ] ]; 
    //  ^----------^------- inserted 
}); 

arr; // [[0,1],[1,2],[2,3]] 

IMO,你會更好使用標準.map()函數,而不是jQuery的非標之一。

var arr=[0,1,2].map(function(n){ 
    return [ n, n + 1 ]; 
}); 

對於不受支持的瀏覽器,您可以使用compatibility patch from MDN

0
$.map([0,1,2], function(n){ 
    return n + 4; 
}); 

結果:[4,5,6]

$.map([0,1,2], function(n){ 
    return [ n, n + 1 ]; 
}); 

結果:[0,1,1,2,2,3]

可以在返回檢查性差異