jQuery map() 返回值竟然不是數(shù)組,怎么回事?
網(wǎng)友解答: 謝邀,不過您說的jQuery.map()方法返回值不是數(shù)組,應(yīng)該是不正確的,您是按照什么方式判斷返回的不是數(shù)組呢?如果有最好能截圖或者把代碼貼上來更有說服力。定義和用法$.m
謝邀,不過您說的jQuery.map()方法返回值不是數(shù)組,應(yīng)該是不正確的,您是按照什么方式判斷返回的不是數(shù)組呢?如果有最好能截圖或者把代碼貼上來更有說服力。
定義和用法$.map() 把每個(gè)元素通過函數(shù)傳遞到當(dāng)前匹配集合中,生成包含返回值的新的 jQuery 對(duì)象,并將處理結(jié)果封裝為新的數(shù)組返回。
注意:
1. 在jQuery 1.6 之前,該函數(shù)只支持遍歷數(shù)組;從 1.6 開始,該函數(shù)也支持遍歷對(duì)象。
2. map()還會(huì)為函數(shù)傳入兩個(gè)參數(shù):其一是當(dāng)前迭代的元素或?qū)傩灾担涠钱?dāng)前迭代項(xiàng)的數(shù)組索引或?qū)ο髮傩悦?
3. 該函數(shù)返回值將作為結(jié)果數(shù)組中的一個(gè)元素,如果返回值為null或undefined,則不會(huì)被添加到結(jié)果數(shù)組中。
原型方法源碼以下為網(wǎng)上搜集的一個(gè)牛人講解的$.map()源碼分析,我們只要看源碼的最后就知道返回的是什么類型數(shù)據(jù)了。
原型方法map跟each類似調(diào)用的是同名靜態(tài)方法,只不過返回來的數(shù)據(jù)必須經(jīng)過另一個(gè)原型方法pushStack方法處理之后才返回。
ret.concat.apply( [], ret )等價(jià)于[].concat.apply([],ret)。
關(guān)鍵作用的是apply,因?yàn)閍pply的第二個(gè)參數(shù)把ret的數(shù)組分成多個(gè)參數(shù)傳入給concat把二維數(shù)組轉(zhuǎn)化為一維數(shù)組返回了。