国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

JS逆序遍歷實現代碼_javascript技巧

來源:懂視網 責編:小采 時間:2020-11-27 21:29:27
文檔

JS逆序遍歷實現代碼_javascript技巧

JS逆序遍歷實現代碼_javascript技巧:最常用的遍歷方式為for語句(也有遞歸、while方式)。當我們遍歷一個數組的時候,我們一般會這么做: 代碼如下: var arr = [1,2,3,4,5,6,7,8,9,10]; for(var i=0,total=arr.length;i console.log(i,arr[i]); } 這就是最常用
推薦度:
導讀JS逆序遍歷實現代碼_javascript技巧:最常用的遍歷方式為for語句(也有遞歸、while方式)。當我們遍歷一個數組的時候,我們一般會這么做: 代碼如下: var arr = [1,2,3,4,5,6,7,8,9,10]; for(var i=0,total=arr.length;i console.log(i,arr[i]); } 這就是最常用

最常用的遍歷方式為for語句(也有遞歸、while方式)。當我們遍歷一個數組的時候,我們一般會這么做:

代碼如下:
var arr = [1,2,3,4,5,6,7,8,9,10];
for(var i=0,total=arr.length;i console.log(i,arr[i]);
}

這就是最常用的遍歷方式:正序遍歷。它從數組的第一項依次走到最后一項。

那為什么今天小劇還會提到逆序遍歷呢?

這里不得不提下小劇寫的組件里最常用的一個模塊:events。用于創建自定義事件模型,處理事件的監聽及觸發,最簡單的發布訂閱(pub/sub)模式。因為最近發現存在內存溢出的隱患,需要在原有的基礎上增加一個解除綁定的方法。

因為同一事件名的回調函數是放在同一數組中,解除綁定也只需要從數組中找到對應的回調函數(同一回調函數可能綁定多次),并且移除即可。

很簡單的需求,于是很自然地寫出類似下面的代碼:

代碼如下:
//移除數組中的2
var arr = [1,2,2,2,2,1,1,2,2];
for(var i=0,total=arr.length;i if(arr[i] == 2){
//符合條件,移除
arr.splice(i,1);
}
}
console.log(arr);

很正常的代碼有木有,可最終輸出結果卻是:[1, 2, 2, 1, 1, 2],顯然執行結果不符合預期。

問題出在哪兒呢?

仔細分析了一下,發現問題出在了每次匹配成功,執行移除操作之后,都會跳過下一個待檢查項,因為數組中之后的每一項都向前上升一位。

找到了問題所在,改了下代碼,在執行移除操作之后,調整序列索引index(i)。

代碼如下:
//移除數組中的2
var arr = [1,2,2,2,2,1,1,2,2];
for(var i=0,total=arr.length;i if(arr[i] == 2){
//符合條件,移除
arr.splice(i,1);
//調整序列索引
i = i-1;
}
}
console.log(arr);

問題解決了,但總感覺修改序列索引是件調戲for循環的事。于是靈光一閃,啪啪啪,敲出下面的代碼:

代碼如下:
//移除數組中的2
var arr = [1,2,2,2,2,1,1,2,2];
for(var i = arr.length-1;i!=-1;i--){
if(arr[i] == 2){
//符合條件,移除
arr.splice(i,1);
}
}
console.log(arr);

遍歷的過程不變,唯一變化的是遍歷的順序變了,對了,還少了一個變量total。

好吧,我承認今天寫的東西很屌絲,但通過這個例子,給以后寫代碼的時候提了個醒,在遍歷過程中,如果涉及到修改數組本身(增刪),逆序遍歷是個比較保險的遍歷方式。

coding筆記,留給以后嘲笑自己!

轉載請注明來源:http://bh-lay.com/blog/148c07761fa

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JS逆序遍歷實現代碼_javascript技巧

JS逆序遍歷實現代碼_javascript技巧:最常用的遍歷方式為for語句(也有遞歸、while方式)。當我們遍歷一個數組的時候,我們一般會這么做: 代碼如下: var arr = [1,2,3,4,5,6,7,8,9,10]; for(var i=0,total=arr.length;i console.log(i,arr[i]); } 這就是最常用
推薦度:
標簽: 技巧 js 代碼
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产成人精品一区二区 | 亚欧精品一区二区三区 | 国产中文在线观看 | 91第一页 | 青青国产成人久久91网站站 | 亚洲国产精品一区二区久久 | 在线亚洲综合 | 午夜精品一区二区三区在线视 | 91精品国产9l久久久久 | 一级黄免费 | 亚洲精品午夜国产va久久成人 | 国产h片在线观看 | 日韩欧美片 | 最新大黄网站免费 | 国产大片91精品免费观看不卡 | 国产一区亚洲二区三区 | 亚洲欧美日韩中文v在线 | 99久久精品国产一区二区小说 | 欧美一区二区三区大片 | 国产在线欧美日韩精品一区二区 | 亚洲va国产va欧美va综合 | 亚洲精品国产综合一线久久 | 高清国产一区 | 亚洲欧美日韩专区 | 免费精品国产日韩热久久 | 国产精品美女一区二区三区 | 精品久久亚洲一级α | 国产精品免费网站 | 精品二区 | 久久久久九九 | 美女网站一区二区三区 | 欧美日韩国产高清一区二区三区 | 亚洲精品在线免费观看 | 欧美伊人久久大香线蕉综合69 | 欧美伊香蕉久久综合类网站 | 亚洲 欧美 成人日韩 | 亚洲精品在线免费观看 | 欧美骚| 国产成人一区二区三区影院免费 | 国产成人精品一区二区三区 | 国产夜夜操|