希望疫情早日結束!!!
在前端方面,渲染清單資料的時候,可能會更改第一個或者最後一個的樣式,又或者其中第幾個的樣式,怎麼做呢?
其實很簡單,便是使用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。
詳細代碼如下:
這個,暫時沒想到什麼更好的方法,便用遞歸實作了。
遞歸,有個很形象的說法,一層一層地撥開你的心!!!
嘻嘻

給樹型資料每項添加額外的資料
遞歸算法,還是很有必要掌握的,在樹型結構方面經常會用到。
希望疫情早點結束!!!