前端for循環(huán)遍歷foreach、map使用方法舉例
title: 前端不同類型的for循環(huán)遍歷——foreach、map
date: 2025-01-04 11:02:17
tags: javascript
前端不同類型的for循環(huán)遍歷
場景:很多時候后端發(fā)來的數(shù)據(jù)是不能夠完全契合前端的需求的,比如你要一個數(shù)據(jù)對象中的值,但是這個值卻作為了key出現(xiàn);比如你要通過一個數(shù)組中的對象的某個屬性來確定到底取哪個對象。
一、for與foreach
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 計算for循環(huán)遍歷所需要的相關(guān)的時間的長短
let arrs = [...Array(99999999).keys()]
let total = 0
let time = 0
let starTime = Date.now()
for (let index = 0; index < arrs.length; index++) {
total++
}
let endTime = Date.now();
time = endTime-starTime;
console.log("for循環(huán)遍歷共計消耗時間:"+ time+"ms");
total = 0
starTime = Date.now()
arrs.forEach(element => {
total++
});
endTime = Date.now();
time = endTime-starTime;
console.log("foreach循環(huán)遍歷共計消耗時間:"+ time+"ms");
</script>
</body>
</html>
發(fā)現(xiàn)兩種遍歷的效率還是差距挺大的,具體如下測試結(jié)果。

注意:
.forEach()方法是不支持break這種結(jié)束方法,但是他支持return進行結(jié)束。
.forEach()方法不支持異步等待,他會直接跳過當中的異步同步化(async、await)請求操作。
二、map
1.基礎(chǔ)遍歷
使用.map方法可以幫助遍歷數(shù)組,同時可以得到數(shù)組的元素、下標、還有當前數(shù)組本身
let arr = [1,2,3,4,5,6];
arr.map((item,index,arr)=>{
console.log(item,index,arr);
})

2.簡單生成新數(shù)組
return是每次返回一個子元素(假如只有一行簡單的代碼,也可以去掉return),就不用復(fù)雜push操作。
let arr = [1,2,3,4,5,6];
//item表示當前的元素,index表示下標,arr當前數(shù)組的的相關(guān)數(shù)據(jù)
let newArr = arr.map(item=>{
return item*2
})
//2,4,6,8,10,12
console.log(newArr);
3.清洗對象數(shù)組數(shù)據(jù)
操作數(shù)組對象中的相關(guān)數(shù)據(jù),可用于清洗數(shù)據(jù)
let arr = [{name:"張三",age:18},{name:"李四",age:22},{name:"王五",age:23},]
let newArr = arr.map(item=>{
return item.name
})
//可以僅遍歷出了自己想要的屬性的數(shù)組
console.log(newArr); // ['張三', '李四', '王五']
4.在數(shù)組對象中追加屬性、更改屬性值
…三個點屬于es6新特性,就是用來展開對象中的所有屬性的簡寫,我們是可以復(fù)寫相關(guān)的屬性的,不影響使用。
let arr = [{name:"張三",age:18},{name:"李四",age:22},{name:"王五",age:23},]
let newArr = arr.map(item=>{
return {
...item,//es6新語法添加所有屬性
age:`${item.age}歲`,//更改值
class:1 //添加新屬性方法
}
})
console.log(newArr);
簡寫方法 ,不寫return的時候的加上一個小括號來包裹相關(guān)的屬性。
let newArr = arr.map(item=>({...item,age:`${item.age}歲`,class:1}))
相關(guān)的結(jié)果如下所示

5.進行屬性名稱的解構(gòu)替換
假如說我們要將name這個屬性名稱改成uname,可以使用map進行相關(guān)的解構(gòu)替換。這樣直接使用一個{屬性},可以直接使用,不用再使用item進行相關(guān)的調(diào)用。
let arr = [{name:"張三",age:18},{name:"李四",age:22},{name:"王五",age:23},]
let newArr = arr.map(({name,age})=>{return{ uname:name,ages:age}})
console.log(newArr);

6.異步請求,同時展示優(yōu)化
很多時候起哦們?nèi)ヒ埱蠛蠖私涌谀玫綌?shù)據(jù),但是請求接口是異步請求,但是又有相關(guān)的需求要同時展示,這個時候就可以利用map添加參數(shù)進行異步請求同步化,再使用promise.all一次處理相關(guān)的所有數(shù)據(jù)。
總結(jié)
到此這篇關(guān)于前端for循環(huán)遍歷foreach、map使用方法的文章就介紹到這了,更多相關(guān)前端for循環(huán)遍歷foreach、map使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
實現(xiàn)抖音兩個旋轉(zhuǎn)小球的loading技巧實例
這篇文章主要為大家介紹了實現(xiàn)抖音兩個旋轉(zhuǎn)小球的loading技巧實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05
詳解JavaScript實現(xiàn)繼承的五種經(jīng)典方式(附圖解)
JavaScript中的繼承是一種機制,通過它可以創(chuàng)建一個對象,該對象可以享有另一個對象的屬性和方法,本文將詳細的為大家介紹實現(xiàn)繼承的五種經(jīng)典方式,感興趣的小伙伴跟著小編一起來看看吧2023-08-08
JS實現(xiàn)的一個簡單的Autocomplete自動完成例子
這篇文章主要介紹了JS實現(xiàn)的一個簡單的Autocomplete自動完成例子,需要的朋友可以參考下2014-04-04
javascript使用數(shù)組的push方法完成快速排序
排序的方法有很多,本節(jié)為大家介紹的是使用數(shù)組的push方法完成快速排序,當然你也可以舉一反三2014-09-09
bootstrap里bootstrap動態(tài)加載下拉框的實例講解
今天小編就為大家分享一篇bootstrap里bootstrap動態(tài)加載下拉框的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

