亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jQuery映射與每個

jQuery映射與每個

守著一只汪 2019-11-05 10:17:37
在jQuery中,map和each函數似乎做同樣的事情。兩者之間是否有實際區別?您什么時候選擇使用一種而不是另一種?
查看完整描述

3 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

該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]

您還將注意到,this該map函數未映射。您將必須在回調中提供第一個參數(例如,我們在i上面使用的)。具有諷刺意味的是,每個方法中使用的回調參數與map函數中的回調參數相反,因此請小心。


map(arr, function(elem, index) {});

// versus 

each(arr, function(index, elem) {});


查看完整回答
反對 回復 2019-11-05
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

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!']


查看完整回答
反對 回復 2019-11-05
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

的each一個數組函數迭代,調用提供的函數每一次元件,和設置this于所述有源元件。這個:


function countdown() {

    alert(this + "..");

}


$([5, 4, 3, 2, 1]).each(countdown);

會提醒5..,然后4..再3..然后2..再1..


另一方面,Map接受一個數組,并返回一個新數組,其中每個元素均由函數更改。這個:


function squared() {

    return this * this;

}


var s = $([5, 4, 3, 2, 1]).map(squared);

會導致s被[25, 16, 9, 4, 1]。


查看完整回答
反對 回復 2019-11-05
  • 3 回答
  • 0 關注
  • 649 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號