最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

JS遍歷數(shù)組的十五種方法

2022-06-05 11:22 作者:朵寶特工007  | 我要投稿

一、循環(huán)遍歷

for循環(huán),也是最常見的。

可以使用臨時(shí)變量,將長(zhǎng)度緩存起來,避免重復(fù)獲取數(shù)組長(zhǎng)度,當(dāng)數(shù)組較大時(shí)優(yōu)化效果才會(huì)比較明顯。

二、for of遍歷

三、for in遍歷

四、forEach()遍歷

這種方法只是使處理需要循環(huán)的數(shù)組變得更加容易,因?yàn)槟悴槐叵裢ǔD菢訉懗霰恐囟L(zhǎng)的for循環(huán)語句。

forEach() 方法用于調(diào)用數(shù)組的每個(gè)元素,并將元素傳遞給回調(diào)函數(shù),沒有返回值,原數(shù)組不變。

forEach() 對(duì)于空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的。

注意和map方法區(qū)分。

五、map()映射遍歷

map() 方法返回一個(gè)新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值,并沒有改變?cè)瓉淼臄?shù)組。

map() 方法按照原始數(shù)組元素順序依次處理元素。

注意:map() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)。

六、filter()過濾遍歷

將所有元素進(jìn)行判斷,將滿足條件的元素作為一個(gè)新的數(shù)組返回, 原數(shù)組不變。

注意:filter() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)。

七、find()遍歷

數(shù)組中的每個(gè)元素都調(diào)用一次函數(shù)執(zhí)行。

當(dāng)數(shù)組中的元素在測(cè)試條件時(shí)返回true,find()返回符合條件的元素,之后的值不會(huì)再執(zhí)行函數(shù);如果沒有符合條件的元素則返回undefined,原數(shù)組不變。

注意::find() 對(duì)于空數(shù)組,函數(shù)是不會(huì)執(zhí)行的。

八、findIndex()遍歷

遍歷數(shù)組,找到第一個(gè)符合條件的元素,并返回該元素;否則,返回-1。

不改變?cè)瓟?shù)組。

九、indexOf()遍歷

從前往后遍歷數(shù)組,找到第一個(gè)符合條件的項(xiàng),并返回該項(xiàng)。否則返回-1。

不改變?cè)瓟?shù)組。

字符串也有此方法,功能類似。

十、lastIndexOf()遍歷

從后往前遍歷數(shù)組,找到第一個(gè)符合條件的項(xiàng),并返回該項(xiàng)。否則返回-1。

不改變?cè)瓟?shù)組。

字符串也有此方法,功能類似。

十一、every()遍歷

將所有元素進(jìn)行判斷,返回一個(gè)布爾值,原數(shù)組不變。

如果所有元素都滿足判斷條件,則返回true,否則為false。

注意:every() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)。

十二、some()遍歷

將所有元素進(jìn)行判斷, 返回一個(gè)布爾值, 原數(shù)組不變。

如果存在元素滿足判斷條件,則返回true,若所有元素都不滿足判斷條件,則返回false。

判斷條件注意和every方法區(qū)分。

十三、reduce高階函數(shù)(迭代(累加器))

十四、reduceRight()遍歷

接收一個(gè)函數(shù)作為累加器(accumulator),數(shù)組中的每個(gè)值(從右到左)開始縮減,最終為一個(gè)值。

第二個(gè)參數(shù)作為第一次調(diào)用的a的值。

十五、遍歷器機(jī)制

截止到ES6,JavaScript 已經(jīng)擁有了數(shù)組、對(duì)象、Map集合和Set集合這樣四種數(shù)據(jù)結(jié)構(gòu)。

為了統(tǒng)一和簡(jiǎn)化遍歷這四種數(shù)據(jù)結(jié)構(gòu)的操作,ES6引入了遍歷器機(jī)制。

ES6 規(guī)定,可遍歷的對(duì)象都具有Symbol.iterator 屬性,這個(gè)屬性指向一個(gè)函數(shù),就是當(dāng)前對(duì)象默認(rèn)的遍歷器生成函數(shù)。

這個(gè)遍歷器生成函數(shù)大致的模樣可以用ES5 語法模擬出來:這個(gè)函數(shù)返回一個(gè)next() 方法,每調(diào)用next() 方法,都會(huì)返回?cái)?shù)據(jù)結(jié)構(gòu)的當(dāng)前成員的信息。

具體來說,就是返回一個(gè)包含value和done兩個(gè)屬性的對(duì)象。

其中,value屬性是當(dāng)前成員的值,done屬性是一個(gè)布爾值,表示遍歷是否結(jié)束。

在ES6 中,已經(jīng)默認(rèn)為絕大多數(shù)內(nèi)建的數(shù)據(jù)結(jié)構(gòu)提供了遍歷器,不需要自己去創(chuàng)建。

每個(gè)數(shù)據(jù)結(jié)構(gòu)都有一個(gè)默認(rèn)的遍歷器,例如數(shù)組的默認(rèn)遍歷器是values(),在沒有明確指定遍歷器的情況下,這些數(shù)據(jù)結(jié)構(gòu)都會(huì)使用默認(rèn)的遍歷器。

我們可以通過檢測(cè)對(duì)象的Symbol.iterator屬性來判斷對(duì)象是否擁有遍歷器。

原生具備遍歷器的對(duì)象:

數(shù)組、Map集合、Set集合、字符串、arguments和 NodeList(節(jié)點(diǎn)列表)。

對(duì)象(Object)默認(rèn)是不可遍歷的,我們可以通過Object.keys()、Object.values()和Object.entries() 方法把對(duì)象變成數(shù)組,使其擁有遍歷器;或者直接為對(duì)象添加Symbol.iterator 屬性來自定義遍歷器。



JS遍歷數(shù)組的十五種方法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
凤阳县| 南陵县| 兴业县| 新巴尔虎右旗| 封开县| 石景山区| 故城县| 象山县| 镶黄旗| 长乐市| 镇宁| 特克斯县| 靖州| 鹤山市| 明水县| 凭祥市| 灌南县| 株洲县| 吴川市| 香港| 密云县| 龙南县| 璧山县| 罗江县| 鹿邑县| 淳安县| 固始县| 虹口区| 津市市| 云和县| 濮阳县| 普宁市| 壤塘县| 含山县| 揭西县| 河间市| 应用必备| 宣武区| 揭西县| 九寨沟县| 枞阳县|