3 回答

TA貢獻1934條經(jīng)驗 獲得超2個贊
該each方法原本是一個不變的迭代器,map可以用作迭代器,但實際上是要操縱提供的數(shù)組并返回一個新數(shù)組。
另一個要注意的重要事項是,該each函數(shù)返回原始數(shù)組,而該map函數(shù)返回一個新數(shù)組。如果您過度使用map函數(shù)的返回值,則可能會浪費大量內(nèi)存。
例如:
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函數(shù)從數(shù)組中刪除項目。例如:
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函數(shù)未映射。您將必須在回調(diào)中提供第一個參數(shù)(例如,我們在i上面使用的)。具有諷刺意味的是,每個方法中使用的回調(diào)參數(shù)與map函數(shù)中的回調(diào)參數(shù)相反,因此請小心。
map(arr, function(elem, index) {});
// versus
each(arr, function(index, elem) {});

TA貢獻1921條經(jīng)驗 獲得超9個贊
1:回調(diào)函數(shù)的參數(shù)相反。
.each()的,$.each()'s和.map()的回調(diào)函數(shù)走索引第一,然后將元件
function (index, element)
$.map()的回調(diào)具有相同的參數(shù),但取反
function (element, index)
2: ,.each(),$.each()和.map()做一些特別的東西用this
each()以this指向當前元素的方式調(diào)用函數(shù)。在大多數(shù)情況下,您甚至不需要在回調(diào)函數(shù)中使用兩個參數(shù)。
function shout() { alert(this + '!') }
result = $.each(['lions', 'tigers', 'bears'], shout)
// result == ['lions', 'tigers', 'bears']
對于$.map()該this變量是指在全局窗口對象。
3:map()對回調(diào)的返回值做一些特殊的事情
map()調(diào)用每個元素上的函數(shù),并將結(jié)果存儲在新數(shù)組中,并返回該數(shù)組。通常,您只需要在回調(diào)函數(shù)中使用第一個參數(shù)。
function shout(el) { return el + '!' }
result = $.map(['lions', 'tigers', 'bears'], shout)
// result == ['lions!', 'tigers!', 'bears!']

TA貢獻1850條經(jīng)驗 獲得超11個贊
的each一個數(shù)組函數(shù)迭代,調(diào)用提供的函數(shù)每一次元件,和設(shè)置this于所述有源元件。這個:
function countdown() {
alert(this + "..");
}
$([5, 4, 3, 2, 1]).each(countdown);
會提醒5..,然后4..再3..然后2..再1..
另一方面,Map接受一個數(shù)組,并返回一個新數(shù)組,其中每個元素均由函數(shù)更改。這個:
function squared() {
return this * this;
}
var s = $([5, 4, 3, 2, 1]).map(squared);
會導致s被[25, 16, 9, 4, 1]。
添加回答
舉報