首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >编程篇(010)-如何解决数组塌陷问题

编程篇(010)-如何解决数组塌陷问题

作者头像
齐丶先丶森
发布2022-05-12 21:20:41
发布2022-05-12 21:20:41
4850
举报
文章被收录于专栏:前端面试秘籍前端面试秘籍

什么叫数组塌陷?

一个数组在进行删除数据单元操作的时候,删除掉这个单元之后,后面的数据单元会自动的补充的这个位置上来,造成数组长度的减少,这种情况被称之为数组塌陷。

例:循环删除数组中的数据,每循环一次,删除一个数据单元

代码语言:javascript
复制
var arr = [0,1,2,3,4,5,6,7,8,9];
for (var i = 0; i < arr.length; i++) {
    arr.splice(i, 1);
}
console.log(arr) // [1, 3, 5, 7, 9]

那么 现在的输出是 [1, 3, 5, 7, 9] 还剩 5 个 单元 ,也就是还有一半没有删除。

因为:我们使用for 循环遍历 arr, 当i = 0的时候, 我们删除了位置为 0 的元素,此时位置为 1 的元素接替了位置 0 , 但同时 i 也累加了, 下次执行删除操作的时候 i 变为 1,再次执行删除操作,其实是删除了现在位置为 1 的元素, 中间跳过了, 所以最后的结果只删除了一半。

如何解决数组塌陷问题呢?

参考答案:

代码语言:javascript
复制
// 方法1 使用i--
for (var i = 0; i < arr.length; i++) {
    arr.splice(i, 1);
    i--;
}
console.log(arr); // []

// 方法2 从数组的末尾一项开始遍历
for (var i = arr.length - 1; i >= 0; i--) {
    arr.splice(i, 1);
}
console.log(arr); // []
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端面试秘籍 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档