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 相关文章推荐
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
jQuery控制输入框只能输入数值的小例子
Mar 20 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
Apr 17 Javascript
jquery实现简单的表单验证
Nov 17 Javascript
javascript实现随机显示星星特效
Jan 28 Javascript
浅析BootStrap栅格系统
Jun 07 Javascript
jQuery实现的简单拖拽功能示例
Sep 13 Javascript
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
Vue之Watcher源码解析(1)
Jul 19 Javascript
深入理解vue.js中$watch的oldvalue与newValue
Aug 07 Javascript
详解ES7 Decorator 入门解析
Feb 18 Javascript
react+redux仿微信聊天界面
Jun 21 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中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
js实现消息滚动效果
2017/01/18 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
python中Apriori算法实现讲解
2017/12/10 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
天猫超市:阿里巴巴打造的网上超市
2016/11/02 全球购物
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
辅导员评语
2014/05/04 职场文书
中专生自荐信
2014/06/25 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
答辩状格式范本
2015/05/22 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis
python munch库的使用解析
2021/05/25 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python