理解jQuery地图

时间:2012-02-05 23:01:32

标签: javascript jquery map

我发现this示例说:

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

将使arr成为6项数组。但是,我不明白为什么它不是[[x,y],[x,y],[x,y]]

我需要一步一步地知道刚刚发生的事情。这个map函数看起来非常有用,我不想因为我不理解它的行为而不使用它。

3 个答案:

答案 0 :(得分:4)

$.map展平返回的数组:

  

返回的数组将展平为生成的数组。

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

答案 1 :(得分: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

答案 2 :(得分: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]

您可以查看回报中的差异