JavaScript中关于for循环删除数组元素内容时出现的问题


Posted in Javascript onNovember 21, 2016

昨天用for循环进行数组去重的时候出现的问题,

首先,用双重for循环把前一个和所有后面的元素进行比较,如果相等则删除。

但是,如果数组里面有三个以上连续相等的元素的时候,就会出现问题。 

var arr = [1,1,1,2,2];
for(var i=0; i<arr.length-1; i++){
for(var j=i+1; j<arr.length; j++){
if(arr[i] === arr[j]){
arr.splice(j,1);
}
}
} 
document.write("arr:"+arr);

输出:

JavaScript中关于for循环删除数组元素内容时出现的问题

这是因为当数组删除一个元素的时候,数组长度减1,后面点元素就会往前移动一位,索引也减1,但是j还是进行了j++的操作。

即第一次进行删除是,i=0 j=1,删除以后arr=[1,1,2,2],然后j=2,就会忽略掉删除以后j=1的元素继续往后遍历。

因此在每次进行了删除的情况下,要对j进行减1

var arr = [1,1,1,2,2];
for(var i=0; i<arr.length-1; i++){
for(var j=i+1; j<arr.length; j++){
if(arr[i] == arr[j]){
arr.splice(j--,1);
}
}
}
document.write("arr:"+arr);

输出:

JavaScript中关于for循环删除数组元素内容时出现的问题

类似关于对数组元素进行删除的,都要考虑数组长度会减1,后面的元素都会往前移动一位

以上所述是小编给大家介绍的JavaScript中关于for循环删除数组元素内容时出现的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
利用了jquery的ajax实现二级联互动菜单
Dec 02 Javascript
js+CSS实现弹出居中背景半透明div层的方法
Feb 26 Javascript
jQuery实现弹出窗口中切换登录与注册表单
Jun 05 Javascript
Json解析的方法小结
Jun 22 Javascript
js跨域资源共享 基础篇
Jul 02 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
Dec 01 Javascript
JavaScript实现图像模糊化的方法实例
Jan 15 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
Oct 26 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
Aug 04 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 17 Javascript
Javascript作用域和作用域链原理解析
Mar 03 Javascript
Vue3不支持Filters过滤器的问题
Sep 24 Javascript
jQuery用FormData实现文件上传的方法
Nov 21 #Javascript
遍历js中对象的属性和值的实例
Nov 21 #Javascript
JavaScript数据结构链表知识详解
Nov 21 #Javascript
jQuery简单自定义图片轮播插件及用法示例
Nov 21 #Javascript
Node.js测试中的Mock文件系统详解
Nov 21 #Javascript
JavaScript中boolean类型之三种情景实例代码
Nov 21 #Javascript
基于jQuery实现Tabs选项卡自定义插件
Nov 21 #Javascript
You might like
php 图片上传类代码
2009/07/17 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
2011/09/19 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
PHP中串行化用法示例
2016/11/16 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
C#公司笔试题
2014/03/28 面试题
2013年员工自我评价范文
2013/12/27 职场文书
小学清明节活动总结
2014/07/04 职场文书
公司员工离职证明书
2014/10/04 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
民主生活会主持词
2015/07/01 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python