Javascript中如何循環(huán)(常用方法推薦)
在JavaScript中,遍歷集合(如數(shù)組、對(duì)象、Map和Set等)有多種方式。以下是一些常用的方法:
數(shù)組(Array)
for 循環(huán)
傳統(tǒng)循環(huán),適用于所有版本的JavaScript。
for (let i = 0; i < array.length; i++) { console.log(array[i]); }
forEach 方法
ES5 引入,用于遍歷數(shù)組元素。
array.forEach((element, index) => { console.log(element); });
for…of 循環(huán)
ES6 引入,用于遍歷可迭代對(duì)象(包括數(shù)組)。
for (const element of array) { console.log(element); }
map 方法
創(chuàng)建一個(gè)新數(shù)組,其結(jié)果是對(duì)調(diào)用數(shù)組中的每個(gè)元素執(zhí)行提供的函數(shù)的結(jié)果。
const newArray = array.map(element => /* ... */);
filter 方法
創(chuàng)建一個(gè)新數(shù)組, 包含通過(guò)所提供函數(shù)實(shí)現(xiàn)的測(cè)試的所有元素。
reduce 方法
對(duì)數(shù)組中的每個(gè)元素執(zhí)行一個(gè)由您提供的reducer函數(shù)(升序),將其結(jié)果匯總為單個(gè)返回值。
some 和 every 方法
- some: 測(cè)試數(shù)組中的某些元素是否至少有一個(gè)滿足提供的函數(shù)。
- every: 測(cè)試數(shù)組中的所有元素是否都滿足提供的函數(shù)。
對(duì)象(Object)
for…in 循環(huán)
遍歷對(duì)象自身的和繼承的可枚舉屬性(不含 Symbol 屬性)。
for (const key in object) { if (object.hasOwnProperty(key)) { console.log(object[key]); } }
Object.keys(), Object.values(), Object.entries()
這些方法返回一個(gè)包含對(duì)象鍵名、鍵值或鍵值對(duì)的數(shù)組,可以結(jié)合數(shù)組的遍歷方法使用。
Map
for…of 循環(huán)
可以直接遍歷Map的鍵值對(duì)。
for (const [key, value] of map) { console.log(key, value); }
forEach 方法
類似于數(shù)組的forEach
,但專門針對(duì)Map設(shè)計(jì)。
map.forEach((value, key) => { console.log(key, value); });
Set
for…of 循環(huán)
直接遍歷Set中的值。
for (const value of set) { console.log(value); }
forEach 方法
與Map類似,Set也有自己的forEach
方法。
set.forEach(value => { console.log(value); });
這些是遍歷不同類型的集合時(shí)最常用的幾種方法。選擇哪種方法取決于你的具體需求以及你所使用的JavaScript環(huán)境。
以下是對(duì)各種循環(huán)類型的總結(jié) 數(shù)組(Array)
for 循環(huán)
- 優(yōu)點(diǎn): 靈活性高,適用于所有版本的JavaScript;可以方便地控制循環(huán)邏輯。
- 缺點(diǎn): 代碼量相對(duì)較多,不如一些更高階的方法簡(jiǎn)潔。
forEach 方法
- 優(yōu)點(diǎn): 語(yǔ)法簡(jiǎn)潔,易于閱讀;適合于不需要返回新數(shù)組或修改原有數(shù)組的情況。
- 缺點(diǎn): 不能中途跳出循環(huán)(如
break
),也不能跳過(guò)某些迭代(如continue
);不支持異步操作。
for…of 循環(huán)
- 優(yōu)點(diǎn): 語(yǔ)法簡(jiǎn)單,可讀性強(qiáng);允許使用
break
和continue
。 - 缺點(diǎn): 相對(duì)較新的特性,可能在舊環(huán)境中不被支持。
map 方法
- 優(yōu)點(diǎn): 返回一個(gè)新的數(shù)組,不會(huì)改變?cè)瓟?shù)組;非常適合用于轉(zhuǎn)換數(shù)組元素。
- 缺點(diǎn): 如果你不需要?jiǎng)?chuàng)建新數(shù)組,那么使用
map
可能會(huì)浪費(fèi)內(nèi)存。
filter 和 reduce 方法
- 優(yōu)點(diǎn):
filter
可以輕松篩選數(shù)據(jù),而reduce
可以用來(lái)累積計(jì)算或復(fù)雜的數(shù)據(jù)處理。 - 缺點(diǎn): 對(duì)于復(fù)雜的操作,代碼可能會(huì)變得難以理解。
some 和 every 方法
- 優(yōu)點(diǎn): 用于檢查條件是否滿足時(shí)非常有用,能立即退出循環(huán)。
- 缺點(diǎn): 只適用于布爾判斷場(chǎng)景。
對(duì)象(Object)
for…in 循環(huán)
- 優(yōu)點(diǎn): 可以遍歷對(duì)象的所有枚舉屬性,包括繼承的屬性。
- 缺點(diǎn): 需要額外檢查屬性是否屬于對(duì)象本身(使用
hasOwnProperty
),并且會(huì)遍歷原型鏈上的屬性,這可能是不必要的。
Object.keys(), Object.values(), Object.entries()
- 優(yōu)點(diǎn): 提供了更精確的遍歷方式,只針對(duì)對(duì)象自身的屬性;返回的數(shù)組可以與數(shù)組的遍歷方法結(jié)合使用。
- 缺點(diǎn): 創(chuàng)建了新的數(shù)組,可能會(huì)有性能開銷。
Map 和 Set
對(duì)于Map和Set,for...of
和forEach
方法都有它們各自的優(yōu)點(diǎn):
- for…of:提供了一種直接遍歷鍵值對(duì)的方式,并且可以使用
break
和continue
語(yǔ)句。 - forEach:語(yǔ)法簡(jiǎn)潔,但無(wú)法中途退出循環(huán)。
到此這篇關(guān)于Javascript中如何循環(huán)的文章就介紹到這了,更多相關(guān)js循環(huán)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript高級(jí)程序設(shè)計(jì) 閱讀筆記(十八) js跨平臺(tái)的事件
js跨平臺(tái)的事件經(jīng)驗(yàn)分享,需要的朋友可以參考下2012-08-08JS中使用 after 偽類清除浮動(dòng)實(shí)例
這篇文章主要介紹了使用 after 偽類清除浮動(dòng)實(shí)例,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下2017-03-03Bootstrap table學(xué)習(xí)筆記(2) 前后端分頁(yè)模糊查詢
這篇文章主要為大家分享了Bootstrap table學(xué)習(xí)筆記,前后端分頁(yè)模糊查詢,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05