免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
統(tǒng)計網(wǎng)頁標簽元素,使用次數(shù),排序,遞歸騷操作——進階高級前端工程師

首先:本人菜鳥一枚,夢想著進階高級前端工程師,并為此而努力奮斗(哈哈哈,這里純屬搞笑)

引子:

昨天看了一個百度架構(gòu)師講的一個公開課,里面提到了三個問題,最基礎(chǔ)的考驗?zāi)鉰s基礎(chǔ)是否扎實的三個問題,如果你一分鐘內(nèi)能夠想到方法,能夠時候?qū)懗鰜?,說明你的基礎(chǔ)還是可以的。

現(xiàn)在出現(xiàn)了各種有利于前端開發(fā)的各種框架,非常簡單,但是看過視頻之后,覺得其實最底層的也是jsvsScript,基礎(chǔ)最重要,如果你的基礎(chǔ)不扎實的話,說實話了解更多的前端框架都是空談。

分享一下三個問題:

1.統(tǒng)計頁面中用了多少種標簽2.出現(xiàn)最多的三種元素3.通過遞歸拿到頁面中所有的標簽元素

分享下我的答案:

1.統(tǒng)計頁面中用了多少種標簽

1-1:

document.querySelectorAll('*');//獲取到頁面中所有的標簽元素

返回的數(shù)據(jù):

這里所涉及到的其實就一個querySelectorAll(),以及*

querySelectorAll() :方法返回文檔中匹配指定 CSS 選擇器的所有元素,返回 NodeList 對象。 

其實說白了就是,使用此方法,你可以獲取到頁面中指定class類名的元素標簽集合,

ps:

你可以使用 NodeList 對象的 length 屬性來獲取匹配選擇器的元素屬性,然后你可以遍歷所有元素,從而獲取你想要的信息。

*:通配符。  

或者是使用上邊提到到的 * ,獲取頁面中所有標簽元素的集合。

  通過querySelectorAll(),你可以得到標簽之后對標簽進行任意蹂躪,當然也可以結(jié)合css選擇器去獲取標簽元素。

  想要了解更多的可以去菜鳥教程看一下哦!

  1-2:

[...document.querySelectorAll('*')].map(v=>v.tagName);//拿到標簽元素

  返回的數(shù)據(jù):

  

    [...document.querySelectorAll('*')]這一段代碼就是你拿到標簽元素的集合。使用map把標簽名字拿到。

    map: 

      map() 方法返回一個新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值。

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

    這里呢我們使用map用來拿到標簽名字。

了解更多相關(guān)map方法使用,可以去菜鳥教程哦!

  1-3:

new Set([...document.querySelectorAll('*')].map(v=>v.tagName)).size;//去重拿到出現(xiàn)了幾種標簽元素

返回的數(shù)據(jù):

通過1-2拿到的數(shù)據(jù),使用new Set()方法去重,并拿到標簽元素一共有多少種。


到這里就已經(jīng)完成了第一問,頁面中一共使用了40種標簽元素。


2.出現(xiàn)最多的三種元素

2-1:
[...document.querySelectorAll('*')].map(v=>v.tagName).reduce((res,a)=>{res[a]=(res[a] || 0) 1 ;  return res;},{});//拿到每個標簽元素出現(xiàn)的次數(shù);

返回的數(shù)據(jù):

  

  reduce()     

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

      reduce() 可以作為一個高階函數(shù),用于函數(shù)的 compose。

    這里呢說白了就是拿到所有標簽名之后使用reduce()方法,去做循環(huán)處理,res[a]=(res[a] || 0) 1;,最后得到每個標簽元素的個數(shù)。

    本人理解這個方法類似于for循環(huán),如果符合條件就 。

了解更多相關(guān)reduce方法使用,可以去菜鳥教程哦!


2-2:
Object.entries([...document.querySelectorAll('*')].map(v=>v.tagName).reduce((res,a)=>{res[a]=(res[a] || 0) 1 ;  return res;},{})).sort((a,b)=>b[1]-a[1]).slice(0,3);//排序,拿到出現(xiàn)最多的前三個標簽元素

返回的數(shù)據(jù):


   這里就拿到出現(xiàn)最多的三個標簽元素,關(guān)于sort()他是排序用的,相信大家都會,就不在這里多做解釋了,slice則是返回前三個,去掉slice就可以拿到所有標簽元素的排序數(shù)組了。

3.通過遞歸拿到頁面中所有的標簽元素


 1 var child = document.children; 2  3   var arr = [];//用來存放獲取到的所有的標簽 4  5   function fn(obj){ 6  7     for(var i=0;i<obj.length;i  ){ 8  9        if(obj[i].children){//當當前元素還存在子元素的時候,遞歸10 11         fn(obj[i].children);12 13        }14 15        arr.push(obj[i]); //遍歷到的元素添加到arr這個數(shù)組中間16     }17 18   }19 20 fn(child);21 22 console.log(arr);//打印出最后獲取到的結(jié)果

返回的數(shù)據(jù):

這里返回的數(shù)據(jù)其實和第一步是一樣的,只不過是這里使用了遞歸的方法,如果有子級標簽元素那么就一直調(diào)用自己。

同樣的接下來你也可以用拿到的arr進行,去重,排序,等等一系列操作。
document.children
children() 方法返回返回被選元素的所有直接子元素。
更多關(guān)于children()的使用方法可以去W3schol了解哦!


到這里上邊提到的三個方法就搞定了,其實這就是最基本的方法,所以基礎(chǔ)很重要,基礎(chǔ)很重要,基礎(chǔ)很重要?。?!




  
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python快速排序算法原理及實現(xiàn)
Python專題——五分鐘帶你了解map、reduce和filter
JavaScript 中循環(huán)迭代數(shù)組的方法比較及使用方法匯總
JS數(shù)組filter、map、reduce函數(shù)的詳細使用說明
「譯」一個超級小的編譯器
67這才是Excel有史以來最復雜也是最強大的函數(shù),沒有之一!
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服