前端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)遍歷所需要的相關的時間的長短 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.基礎遍歷
使用.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),就不用復雜push操作。
let arr = [1,2,3,4,5,6]; //item表示當前的元素,index表示下標,arr當前數(shù)組的的相關數(shù)據(jù) let newArr = arr.map(item=>{ return item*2 }) //2,4,6,8,10,12 console.log(newArr);
3.清洗對象數(shù)組數(shù)據(jù)
操作數(shù)組對象中的相關數(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新特性,就是用來展開對象中的所有屬性的簡寫,我們是可以復寫相關的屬性的,不影響使用。
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的時候的加上一個小括號來包裹相關的屬性。
let newArr = arr.map(item=>({...item,age:`${item.age}歲`,class:1}))
相關的結(jié)果如下所示
5.進行屬性名稱的解構(gòu)替換
假如說我們要將name這個屬性名稱改成uname,可以使用map進行相關的解構(gòu)替換。這樣直接使用一個{屬性},可以直接使用,不用再使用item進行相關的調(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ù),但是請求接口是異步請求,但是又有相關的需求要同時展示,這個時候就可以利用map添加參數(shù)進行異步請求同步化,再使用promise.all一次處理相關的所有數(shù)據(jù)。
總結(jié)
到此這篇關于前端for循環(huán)遍歷foreach、map使用方法的文章就介紹到這了,更多相關前端for循環(huán)遍歷foreach、map使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
兩種WEB下的模態(tài)對話框 (asp.net或js的分別實現(xiàn))
在如今互聯(lián)網(wǎng)網(wǎng)站上,AJAX效果風靡一時,應該說AJAX技術(shù)在未來幾年不會動搖,在AJAX效果中,模態(tài)對話框是比較常見的效果,也是非常適用的。2009-12-12詳解JavaScript如何實現(xiàn)一個簡易的Promise對象
Promise對象的作用將異步操作以同步操作的流程表達出來,避免層層嵌套的回調(diào)函數(shù),而且Promise提供了統(tǒng)一的接口,使得控制異步操作更加容易。本文介紹了如何實現(xiàn)一個簡單的Promise對象,需要的可以參考一下2022-11-11JavaScript代碼實現(xiàn)春晚劉謙魔術(shù)的模擬程序
昨晚春晚上劉謙的兩個魔術(shù)表演都非常精彩,尤其是第二個魔術(shù),他演繹了經(jīng)典的約瑟夫環(huán)問題!約瑟夫環(huán)是一個經(jīng)典的數(shù)學問題,本文給出了完整的 JavaScript 代碼實現(xiàn),感興趣的同學可以自己動手實現(xiàn)一下2024-02-02Javascript將數(shù)字轉(zhuǎn)化成為貨幣格式字符串
這篇文章主要介紹Javascript將數(shù)字轉(zhuǎn)化成為貨幣格式字符串的方法,通俗易懂,需要的朋友可以參考下。2016-06-06Clipboard.js 無需Flash的JavaScript復制粘貼庫
這篇文章主要介紹了JavaScript 內(nèi)容復制(無需flash) Clipboard.js使用方法,需要的朋友可以參考下2015-10-10