Vue中構(gòu)造數(shù)組數(shù)據(jù)之map和forEach方法實(shí)現(xiàn)
數(shù)組操作是前端最重要的數(shù)據(jù)操作,構(gòu)造數(shù)組數(shù)據(jù),又是數(shù)組操作中很常見的。本文將梳理下map和forEach方法在Vue項(xiàng)目中的使用。
想要深入理解這兩個(gè)方法,一定要手寫幾次簡易的實(shí)現(xiàn),理解其中的要義。這里只考慮核心部分,一些邊界問題就忽略了。
一、手寫實(shí)現(xiàn)
簡易map方法:
Array.prototype.myMap = function(callback) {
const res = [];
for (let i = 0; i < this.length; i++) {
// 這里將回調(diào)函數(shù)的執(zhí)行結(jié)果push進(jìn)了新數(shù)組,
// 因此map方法在回調(diào)函數(shù)中一定要有return。
res.push(callback(this[i], i, this));
}
return res;
}簡易forEach方法:
Array.prototype.myForEach = function (fn, context) {
context = context || arguments[1];
let len = this.length;
let k = 0;
while (k < len) {
if (k in this) {
fn.call(context, this[k], k, this);
};
k++;
}
};二、二者區(qū)別
相同點(diǎn):
1,都對數(shù)組的循環(huán)語句做了封裝(while循環(huán))。
2,map能做的事,forEach也能做,反之亦然。
3,兩者都可以修改原數(shù)組,通過回調(diào)函數(shù)實(shí)現(xiàn)。當(dāng)然兩者的回調(diào)函數(shù)都可以不對原數(shù)組做修改。
4,在兩個(gè)方法中使用return,只能結(jié)束當(dāng)前這一次循環(huán),不能結(jié)束整個(gè)循環(huán),因?yàn)閞eturn是寫在回調(diào)函數(shù)中的。
不同點(diǎn):
1,map方法返回一個(gè)新數(shù)組;forEach方法返回undefined。
2,map可鏈?zhǔn)秸{(diào)用,forEach不可以。因?yàn)閒orEach總是返回undefined。
3,除了拋出異常,沒有辦法終止或跳出forEach循環(huán)。
三、使用場景
以下兩種情況不要使用map方法。
1,不打算使用返回的新數(shù)組。
2,沒有在回調(diào)函數(shù)中返回值。
舉個(gè)Vue中的例子:
比如后臺(tái)接口返回一個(gè)對象數(shù)據(jù),我們需要將此對象數(shù)據(jù)構(gòu)造成為一個(gè)新數(shù)組,展示到elementUi中的select下拉框中。那么我們應(yīng)該用map方法呢,還是forEach呢?
let data = {
product: '產(chǎn)品',
service: '服務(wù)',
micServide: '微服務(wù)',
}
let keysArr = Object.keys(data)
// 用forEach方法
let res = []
keysArr .forEach(item => {
res.push( { value: item, label: data[item] } )
})
// 用map方法
let res1 = data.map(item => {
return { value: item, label: }
})// 在Vue項(xiàng)目中,直接將res 換成給當(dāng)前組件data中的數(shù)據(jù)賦值即可。
由以上例子可見,當(dāng)我們需要構(gòu)造一個(gè)新的數(shù)組時(shí),兩種方法都能用,但是map方法要更簡潔。因此,能用map方法的地方,首先要用map方法。
到此這篇關(guān)于Vue中構(gòu)造數(shù)組數(shù)據(jù)-map和forEach方法梳理的文章就介紹到這了,更多相關(guān)Vue構(gòu)造數(shù)組數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue向后臺(tái)傳數(shù)組數(shù)據(jù),springboot接收vue傳的數(shù)組數(shù)據(jù)實(shí)例
- 使用Vue.set()方法實(shí)現(xiàn)響應(yīng)式修改數(shù)組數(shù)據(jù)步驟
- Vue組件模板形式實(shí)現(xiàn)對象數(shù)組數(shù)據(jù)循環(huán)為樹形結(jié)構(gòu)(實(shí)例代碼)
- Vue必學(xué)知識點(diǎn)之forEach()的使用
- 詳解vue數(shù)組遍歷方法forEach和map的原理解析和實(shí)際應(yīng)用
- vue forEach循環(huán)數(shù)組拿到自己想要的數(shù)據(jù)方法
相關(guān)文章
vue-router二級導(dǎo)航切換路由及高亮顯示的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于vue-router二級導(dǎo)航切換路由及高亮顯示的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
使用Vue-neo4j實(shí)現(xiàn)繪制三國人物圖譜關(guān)系
這篇文章主要介紹了使用Vue-neo4j實(shí)現(xiàn)繪制三國人物圖譜關(guān)系,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
基于Vue組件化的日期聯(lián)動(dòng)選擇器功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了基于Vue組件化的日期聯(lián)動(dòng)選擇器的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11
vue 監(jiān)聽input輸入事件(oninput)的示例代碼支持模糊查詢
這篇文章主要介紹了vue 監(jiān)聽input輸入事件(oninput)支持模糊查詢,比如說表格模糊查詢,實(shí)現(xiàn)一邊輸入,一邊過濾數(shù)據(jù),本文通過示例代碼給大家詳細(xì)講解,需要的朋友可以參考下2023-02-02
vue打包npm run build時(shí)候界面報(bào)錯(cuò)的解決
這篇文章主要介紹了vue打包npm run build時(shí)候界面報(bào)錯(cuò)的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
vue-element-admin后臺(tái)生成動(dòng)態(tài)路由及菜單方法詳解
vue-element-admin后臺(tái)管理系統(tǒng)模板框架 是vue結(jié)合element-ui一體的管理系統(tǒng)框架,下面這篇文章主要給大家介紹了關(guān)于vue-element-admin后臺(tái)生成動(dòng)態(tài)路由及菜單的相關(guān)資料,需要的朋友可以參考下2023-09-09

