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]

map也可以用来删除数组中的一项

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]

map中this是不会映射的,所以要在返回函数中加参数。注意的是map中的参数和each中的参数是相反的。

map(arr, function(elem, index) {});
// versus 
each(arr, function(index, elem) {});

candice
435 声望25 粉丝

看原始的资料,读系统的书籍,研究官方或是优秀项目的源码。加油!