我试图更好地理解jQuery.map函数.
因此,一般而言.map采用数组并将其"映射"到另一个项目数组.
简单的例子:
$.map([0,1,2], function(n){ return n+4; });
结果在[4,5,6]
我想我明白它的作用.我想知道为什么有人需要它.这个功能的实际用途是什么?你是如何在你的代码中使用它的?
映射有两个主要目的:从项目数组中获取属性,以及将每个项目转换为其他项目.
假设您有一个表示用户的对象数组:
var users = [ { id: 1, name: "RedWolves" }, { id: 2, name: "Ron DeVera" }, { id: 3, name: "Jon Skeet" } ];
映射是从每个项目中获取特定属性的便捷方式.例如,您可以将其转换为用户ID数组:
var userIds = $.map(users, function(u) { return u.id; });
再举一个例子,假设您有一组元素:
var ths = $('table tr th');
如果要存储这些表头的内容供以后使用,可以获取其HTML内容的数组:
var contents = $.map(ths, function(th) { return th.html(); });
$.map
是关于转换集合中的项目.
就DOM而言,我经常使用它来快速从我的元素中提取值:
var usernames = $('#user-list li label').map(function() { return this.innerHTML; })
以上将用户列表中的元素转换为其中包含的文本.然后我可以这样做:
alert('The following users are still logged in: ' + usernames.join(', '));
Map是一个高阶函数,它使您能够将某个函数应用于给定序列,生成一个新的结果序列,其中包含每个原始元素的值以及所应用函数的值.
我经常用它来获取我所有jQuery UI面板的有效选择器,例如:
var myPanels = $('a').map(function() { return this.hash || null; }).get().join(',');
这将返回当前页面中可用面板的逗号分隔字符串,如下所示:
"#home,#publish,#request,#contact"
这是一个可以使用的有效选择器:
$(myPanels);// do something with all the panels