无法理解MAP方法的行为?

时间:2012-02-18 06:16:05

标签: jquery

var $inventory=$('#inventory tbody');
var quantities=$inventory.find('td:nth-child(2)')   // suppose it contains values of 2,3,4 inside td tags 
                  .map(function(index,qty){
                       return$(qty).text();
     }).get();

现在,我在这里得不到map。它被用作map(function(**index,qty**),但根据link

这应该像

  jQuery.map( arrayOrObject, callback**( value, indexOrKey** ) )

但是我的代码中提到的地图仍然运行良好,但与INDEX和VALUE相反。 和var quantities输出
    ["2", "3", "4"]   所以,我很困惑?看起来像文档错误!!

[编辑:] 最后使用get(),但即使我不使用它,输出仍然是相同的,即[“2”,“3”,“4”]那么为什么要使用它呢? 说我的修改后的代码现在是
  // .....same above code
return$(qty).text(); });

2 个答案:

答案 0 :(得分:1)

.map()

这是来自您使用的docs .map返回jquery对象,而回调内部this指的是当前的DOM元素

  

.map(callback(index,domElement))

     

callback(index,domElement)将为其调用的函数对象   当前集合中的每个元素。


其中您提到的链接指的是返回数组的$.map

jQuery.map()

  

jQuery.map(array,callback(elementOfArray,indexInArray))

     

array要翻译的数组。

     

callback(elementOfArray,indexInArray)处理每个函数的函数   项目反对。函数的第一个参数是数组项,   第二个参数是数组中的索引该函数可以返回任何   值。在函数内,这指的是全局(窗口)对象。

答案 1 :(得分:0)

有两种“地图”方法:one在全局对象(jQuery.map)和one中,属于选择结果(jQuery.fn.map)。第一个用于常规JavaScript数组或对象。您正在使用第二个,它适用于所选元素列表(因此,不需要第一个参数)。