数组的坍塌
目錄
1.什么是數(shù)組的塌陷
2.數(shù)組的塌陷造成的影響
3.消除數(shù)組塌陷造成的影響
1.什么是數(shù)組的塌陷
? ? ? ?數(shù)組在執(zhí)行刪除操作時,刪除數(shù)組單元之后,后面的數(shù)組單元會向前移動,出現(xiàn)在刪除單元的位置上,造成數(shù)組長度減少的現(xiàn)象,就是數(shù)組的塌陷。
2.數(shù)組的塌陷造成的影響
? ? ? ?只要數(shù)組執(zhí)行刪除操作,立即就會觸發(fā)數(shù)組的塌陷,數(shù)組塌陷不能阻止,我們只能消除數(shù)組塌陷造成的影響。
我們先用 正常思路 進行 數(shù)組去重
var arr = [1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6];//先給數(shù)組排序 arr.sort(function (min, max) { return min - max }); console.log(arr);//然后循環(huán)遍歷數(shù)組// 當(dāng)前的單元 和 下一個單元 進行數(shù)據(jù)的比較判斷 // 最后一個單元 沒有 下一個單元進行比較判斷 // 所以循環(huán)到 倒數(shù)第二個單元 就可以了 // 也就是 循環(huán)至 倒數(shù)第二個單元的索引下標就可以了 for (var i = 0; i < arr.length - 1; i++) {//判斷兩個單元的數(shù)值是否相等// arr[i] 是 當(dāng)前索引下標對應(yīng)的單元// arr[i+1] 是 下一個索引下標對應(yīng)的單元if (arr[i] === arr[i + 1]) {// 如果 兩個單元 存儲的數(shù)據(jù)相同 刪除 后一個單元的數(shù)據(jù)arr.splice(i + 1, 1);} } console.log(arr);執(zhí)行數(shù)組排序的結(jié)果:
循環(huán)遍歷數(shù)組,進行判斷刪除操作后的結(jié)果:
?那么我們就可以看出,循環(huán)遍歷數(shù)組,進行判斷刪除操作后,它是刪除了一部分重復(fù)的數(shù)據(jù),但是呢,它沒能徹底完成去重,這就是數(shù)組塌陷造成的影響。
3.消除數(shù)組塌陷造成的影響
既然數(shù)組塌陷造成了影響,那么肯定就會使我們的程序不能正常執(zhí)行它的功能,這時候,我們就必須要消除數(shù)組坍塌造成的影響。
我們其實只需要進行一個簡單的操作,那就是,在if判斷里面,進行刪除操作后面添加一個i--,就可以消除數(shù)組坍塌造成的影響。
var arr = [1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6];arr.sort(function (min, max) { return min - max }); //console.log(arr);for (var i = 0; i < arr.length - 1; i++) {if (arr[i] === arr[i + 1]) {arr.splice(i + 1, 1);//消除數(shù)組坍塌造成的影響i--; } } console.log(arr);執(zhí)行結(jié)果:
總結(jié)
- 上一篇: CTF密码学-编码基础知识点总结
- 下一篇: java同名变量在list中添加两次_去