【问题标题】:understanding jQuery map了解 jQuery 地图
【发布时间】:2012-02-05 23:01:32
【问题描述】:

我找到了this 示例:

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

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

我需要逐步了解刚刚发生的事情。这个map 函数似乎非常有用,我不想仅仅因为我不了解它的行为而不使用它。

【问题讨论】:

  • 您是否正在寻找该页面中显示的一个值数组(将被展平为完整数组)之外的答案?

标签: javascript jquery map


【解决方案1】:

$.map 将返回的数组展平:

返回的数组将被展平为结果数组。

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

【讨论】:

  • 不敢相信我错过了...好吧,我想在阅读时听 Metallica 时会失去一些注意力。编辑:我会在 40 分钟内接受答案,我真的必须去
  • @mithril333221 一个人会失去生活的意愿,因为它是 St。愤怒 ;)
【解决方案2】:

您可以对返回的 Array 进行双重包装以避免输出扁平化。

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

【讨论】:

    【解决方案3】:
    $.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]

    你可以检查返回的差异

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      相关资源
      最近更新 更多