最常用的遍歷方式為for語句(也有遞歸、while方式)。當我們遍歷一個數組的時候,我們一般會這么做:
這就是最常用的遍歷方式:正序遍歷。它從數組的第一項依次走到最后一項。
那為什么今天小劇還會提到逆序遍歷呢?
這里不得不提下小劇寫的組件里最常用的一個模塊:events。用于創建自定義事件模型,處理事件的監聽及觸發,最簡單的發布訂閱(pub/sub)模式。因為最近發現存在內存溢出的隱患,需要在原有的基礎上增加一個解除綁定的方法。
因為同一事件名的回調函數是放在同一數組中,解除綁定也只需要從數組中找到對應的回調函數(同一回調函數可能綁定多次),并且移除即可。
很簡單的需求,于是很自然地寫出類似下面的代碼:
很正常的代碼有木有,可最終輸出結果卻是:[1, 2, 2, 1, 1, 2],顯然執行結果不符合預期。
問題出在哪兒呢?
仔細分析了一下,發現問題出在了每次匹配成功,執行移除操作之后,都會跳過下一個待檢查項,因為數組中之后的每一項都向前上升一位。
找到了問題所在,改了下代碼,在執行移除操作之后,調整序列索引index(i)。
問題解決了,但總感覺修改序列索引是件調戲for循環的事。于是靈光一閃,啪啪啪,敲出下面的代碼:
遍歷的過程不變,唯一變化的是遍歷的順序變了,對了,還少了一個變量total。
好吧,我承認今天寫的東西很 主站蜘蛛池模板: 崇礼县| 嵊州市| 城口县| 南靖县| 安陆市| 韩城市| 资中县| 天水市| 紫云| 偏关县| 辽阳县| 宝清县| 沙洋县| 嘉定区| 长丰县| 班玛县| 榕江县| 昆明市| 西平县| 承德市| 萍乡市| 互助| 汉川市| 新兴县| 兴城市| 明溪县| 革吉县| 双鸭山市| 郧西县| 潮安县| 蓬溪县| 关岭| 南澳县| 平原县| 吉首市| 岳阳市| 永年县| 祁阳县| 江油市| 沧源| 沧源|