天天看點

進階前端進階(一)

希望疫情早日結束!!!

在前端方面,渲染清單資料的時候,可能會更改第一個或者最後一個的樣式,又或者其中第幾個的樣式,怎麼做呢?

其實很簡單,便是使用last-child選擇器相關知識。

問題是,有時候,我們使用last-child會出現失效的問題。

先來個實際場景:

目的:給最後一個class="invalid"的元素添加背景色。

為啥會失效?主要問題就是最後有個class="disturb"的元素。

使用last-child選擇器必須要有個容器包裹,否則就會失效,把上面class="invalid"元素再用一個div包裹起來便可以了。

改成以下便可以了

關于這一點,個人覺得前端一般不需要這麼做,畢竟前端主要負責進行資料渲染,以及使用者互動。

但将list轉為樹型資料,裡面涉及到的算法,我們還是要了解一下的。

将list轉為樹型資料,一般用到的是遞歸跟多次周遊方法。

其他的方法便不多做介紹了。在此介紹掌握最高效的方法,一次周遊即可。

為了實作這個目的,我們需要了解很多的知識點。

1、基本的原理

每條資料都要有相應的id跟pid

id指的是這條資料的主鍵(就這麼了解吧),一定要是唯一的。

pid指的是這條資料的上級資料的主鍵id,(相當于組織機構中,上級組織機構的主鍵id)。

當每條資料滿足具有id跟pid的時候,那便可以将資料轉為樹型結構。

2、JavaScript是弱類型語言。舉個例子:

3、引用類型(這個便是重中之重了,也是為啥一次周遊便能夠實作想要的結果的原因)

引用類型,變量存儲的是位址,而位址對應的是值,我們需要做的是改變值,但這個變量名稱是不變的,也就是位址是不變的,值是改變的。

通過定義一個變量itemMap,動态地給itemMap添加id屬性值,而itemMap屬性的值為list中的一個數組對象,并且循環周遊的時候,不斷給itemMap屬性值添加相應的children。

詳細代碼如下:

這個,暫時沒想到什麼更好的方法,便用遞歸實作了。

遞歸,有個很形象的說法,一層一層地撥開你的心!!!

嘻嘻

進階前端進階(一)

給樹型資料每項添加額外的資料

遞歸算法,還是很有必要掌握的,在樹型結構方面經常會用到。

進階前端進階(一)

希望疫情早點結束!!!