JavaScript數(shù)組塌陷實(shí)例解析
什么是數(shù)組塌陷
當(dāng)數(shù)組執(zhí)行刪除單元操作時,被刪除單元,之后的單元,會前移,進(jìn)而頂替被刪除單元,出現(xiàn)在被刪除單元的位置上,造成數(shù)組長度減少的情況,這樣的現(xiàn)象稱為數(shù)組的坍塌
// 需求: 要求刪除掉數(shù)組中的所有元素,但是要一個一個的刪除 // 定義一個數(shù)組 var arr = [3, 4, 44, 65, 56] console.log('原始數(shù)組 : ', arr); // 遍歷循環(huán)數(shù)組 for (var i = 0; i < arr.length; i++) { arr.splice(i, 1) } console.log('刪除后的數(shù)組 : ', arr); /* 分析: 代碼開始執(zhí)行這個時候 i===0 arr = [3, 4, 44, 65, 56] arr.length = 5 結(jié)果是true arr.splice(0,1) i===1 arr = [4, 44, 65, 56] arr.length = 4 結(jié)果是true arr.splice(1,1) i===2 arr = [4, 65, 56] arr.length = 3 結(jié)果是true arr.splice(2,1) i===3 arr = [4, 65] arr.length = 2 結(jié)果是falses 循環(huán)結(jié)束 */
解決方案一:
我們循環(huán)的時候倒著循環(huán)
// 解決方案 方案一 var arr = [3, 4, 44, 65, 56] console.log('原始數(shù)組 : ', arr); // 遍歷循環(huán)數(shù)組 for (var i = arr.length - 1; i >= 0; i--) { arr.splice(i, 1) } console.log('刪除后的數(shù)組 : ', arr); /* 分析: 代碼開始執(zhí)行; i === 4 arr = [3, 4, 44, 65, 56] 這個時候4是大于0的 條件成立 arr.splice(4,1) i === 3 arr = [3, 4, 44, 65] 這個時候3也是大于0 的 條件成立 arr.splice(3,1) i === 2 arr = [3, 4, 44] 這個時候也是大于0 的 條件成立 arr.splice(2,1) i === 1 arr = [3, 4] 這個時候1也是大于0 的 條件成立 arr.splice(1,1) i === 0 arr = [3] 這個時候0是等于0 的 條件成立 arr.splice(0,1) i === -1 arr = [] 這個時候-1不大于等于0 的 條件不成立 循環(huán)結(jié)束 */
解決方法二
就是每執(zhí)行一次刪除就執(zhí)行一次 i-- 操作
// 解決方案 方案二 var arr = [3, 4, 44, 65, 56] console.log('原始數(shù)組 : ', arr); // 遍歷循環(huán)數(shù)組 for (var i = 0; i < arr.length; i++) { arr.splice(i, 1) i-- } console.log('刪除后的數(shù)組 : ', arr); /* 分析: 代碼開始執(zhí)行 i === 0 arr = [3, 4, 44, 65, 56] arr.length = 5 條件成立 arr.splice(0, 1) 這個時候執(zhí)行了 i-- i === 0 arr = [4, 44, 65, 56] arr.length = 4 條件成立 arr.splice(0, 1) i === 0 arr = [ 44, 65, 56] arr.length = 3 條件成立 arr.splice(0, 1) i === 0 arr = [ 65, 56] arr.length = 2 條件成立 arr.splice(0, 1) i === 0 arr = [ 56] arr.length = 1 條件成立 arr.splice(0, 1) i === 0 arr = [] arr.length = 0 條件不成立 循環(huán)結(jié)束 */
以上就是JavaScript數(shù)組塌陷實(shí)例解析的詳細(xì)內(nèi)容,更多關(guān)于JavaScript數(shù)組塌陷的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
bootstrap table服務(wù)端實(shí)現(xiàn)分頁效果
這篇文章主要為大家詳細(xì)介紹了bootstrap table服務(wù)端實(shí)現(xiàn)分頁效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08微信小程序動畫組件使用解析,類似vue,且更強(qiáng)大
這篇文章主要介紹了微信小程序動畫組件,類似vue,且更強(qiáng)大使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08JavaScript變量中var,let和const的區(qū)別
這篇文章主要介紹了JavaScript變量中var,let和const的區(qū)別,JavaScript中一共有3種用來聲明變量的關(guān)鍵字,分別是var、let和const,文章通過圍繞主題展開對三個關(guān)鍵詞的詳細(xì)介紹,需要的朋友可以參考一下2022-09-09JavaScript實(shí)現(xiàn)復(fù)選框全選功能
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)復(fù)選框全選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-046種javascript顯示當(dāng)前系統(tǒng)時間代碼
這篇文章主要介紹了6種javascript顯示當(dāng)前系統(tǒng)時間代碼,歡迎大家學(xué)習(xí)借鑒2015-12-12微信小程序 如何獲取網(wǎng)絡(luò)狀態(tài)
這篇文章主要介紹了微信小程序 如何獲取網(wǎng)絡(luò)狀態(tài),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07將Datatable轉(zhuǎn)化成json發(fā)送前臺實(shí)現(xiàn)思路
將Datatable轉(zhuǎn)化成json可以將dt序列化成json,放到前臺的隱藏控件hidBoundary中,具體的實(shí)現(xiàn)如下,有類似需求的朋有可以參考下2013-09-09