在jQuery中,map
和each
函数似乎也做同样的事情。两者之间有什么实际差异?你什么时候选择使用一个而不是另一个?jQuery地图与各个
回答
each
方法的意思是一个不可变的迭代器,其中map
方法可以用作迭代器,但实际上是为了操作提供的数组并返回一个新数组。
另一个需要注意的重要事项是each
函数返回原始数组,而map
函数返回一个新数组。如果过度使用map函数的返回值,则可能会浪费大量内存。
例如:
var items = [1,2,3,4];
$.each(items, function() {
alert('this is ' + this);
});
var newItems = $.map(items, function(i) {
return i + 1;
});
// newItems is [2,3,4,5]
也可以使用映射函数从数组中删除项目。例如:
var items = [0,1,2,3,4,5,6,7,8,9];
var itemsLessThanEqualFive = $.map(items, function(i) {
// removes all items > 5
if (i > 5)
return null;
return i;
});
// itemsLessThanEqualFive = [0,1,2,3,4,5]
您还会注意到,this
没有在map
函数映射。您必须在回调中提供第一个参数(例如,我们使用上面的i
)。具有讽刺意味的是,每个方法中使用的回调参数都与map函数中的回调参数相反,所以要小心。
map(arr, function(elem, index) {});
// versus
each(arr, function(index, elem) {});
错误的是,map并不是要改变提供的数组,它的意思是基于输入数组和映射函数返回* new *数组。 – arul 2009-04-14 19:57:59
当你在数组上进行工作时,Jquery.map更有意义,因为它对数组表现很好。
Jquery.each在迭代选择器项目时最适用。这证明了map函数不使用选择器。
$(selector).each(...)
$.map(arr....)
正如你所看到的,map并不打算与选择器一起使用。
不幸的是,每一个函数都被命名...不是第一次,也不是最后一个,我会被绊倒在哪一个人询问 – 2009-04-14 20:09:14
地图,每个都有一个选择器版本和一个util版本。 $ .map和$ .each与$(“”)。map和$(“”)。each。 – Magnar 2009-04-14 20:10:55
在阵列中的each
函数迭代,调用提供的函数每一次元件,和设置this
到有源元件。此:
function countdown() {
alert(this + "..");
}
$([5, 4, 3, 2, 1]).each(countdown);
将提醒5..
然后4..
然后3..
2..
然后然后1..
地图上另一方面带有一个数组,并且返回与由函数改变各元素的新阵列。此:
function squared() {
return this * this;
}
var s = $([5, 4, 3, 2, 1]).map(squared);
将导致s为[25, 16, 9, 4, 1]
。
1:回调函数的参数是相反的。
.each()
的,$.each()
's和.map()
的回调函数先取索引,然后将元件
function (index, element)
$.map()
的回调具有相同的参数,但颠倒
function (element, index)
2:.each()
,$.each()
和.map()
做一些特别的事this
each()
以这样的方式调用函数,即this
指向当前元素。在大多数情况下,你甚至不需要回调函数中的两个参数。
function shout() { alert(this + '!') }
result = $.each(['lions', 'tigers', 'bears'], shout)
// result == ['lions', 'tigers', 'bears']
对于$.map()
的this
变量指的是全球窗口对象。
3:map()
做一些特别的东西有回调的返回值
map()
呼吁每个元素的功能,并将结果保存在一个新的阵列,将其返回。您通常只需要在回调函数中使用第一个参数。
function shout(el) { return el + '!' }
result = $.map(['lions', 'tigers', 'bears'], shout)
// result == ['lions!', 'tigers!', 'bears!']
我理解它通过此:
function fun1() {
return this + 1;
}
function fun2(el) {
return el + 1;
}
var item = [5,4,3,2,1];
var newitem1 = $.each(item, fun1);
var newitem2 = $.map(item, fun2);
console.log(newitem1); // [5, 4, 3, 2, 1]
console.log(newitem2); // [6, 5, 4, 3, 2]
所以,而 “地图” 函数返回一个新的数组
var intArray = [1, 2, 3, 4, 5];
//lets use each function
$.each(intArray, function(index, element) {
if (element === 3) {
return false;
}
console.log(element); // prints only 1,2. Breaks the loop as soon as it encountered number 3
});
//lets use map function
$.map(intArray, function(element, index) {
if (element === 3) {
return false;
}
console.log(element); // prints only 1,2,4,5. skip the number 3.
});
- 1. 创建地图与各国
- 2. 各地使用jQuery
- 3. 与各国自定义地区分布图分为地区
- 4. 谷歌地图和各地标志
- 5. Excel VBA图与Powerpoint与每个图各自的大小
- 6. jquery onclick与地图区域
- 7. jquery缩放图像与图像地图
- 8. 如何使用jQuery正确定位各个地图ID区域标题属性
- 9. Java数组与各地20000值声明
- 10. 各地QLabel
- 11. 设置一个谷歌地图视口的各个位置
- 12. 加入地图各个元素的第一个字母
- 13. 如何使用jquery ui地图设计全国各地的界限?
- 14. 在地图中显示各省(如州)
- 15. 绘制各省的世界地图
- 16. Android的检测各界在地图V2
- 17. gRaphael图书馆 - 线型图与多条线路,各个提示
- 18. 试图找到各个列
- 19. 创建与各种图标和splashscreens各种APK
- 20. 一个函数加载各种php页面与jQuery和AJAX
- 21. 与各变量
- 22. 图纸勾勒各地的多个geom_point组,ggplot
- 23. 添加从地图值到JSON各个领域斯卡拉
- 24. jvector地图想只是链接各省每个HTML页面,
- 25. jQuery的地图VS jQuery的每个
- 26. jQuery将各种id加载到页面的各个部分
- 27. File_put_content各种图像,并与数
- 28. Jquery谷歌地图链接与iPhone地图
- 29. 各个国家的本地化游戏
- 30. 问题与谷歌地图V3和jQuery
另请参阅:http:// stackoverflow。 com/questions/3612320/why-are-jquerys-callback-arguments-inconsistent – ryenus 2016-09-27 12:57:17