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小技巧
Mar 01 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
Dec 31 Javascript
用js写了一个类似php的print_r输出换行功能
Feb 18 Javascript
jquery操作checkbox示例分享
Jul 21 Javascript
jQuery中end()方法用法实例
Jan 08 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
Aug 25 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
May 28 Javascript
jQuery实现动态删除LI的方法
May 30 jQuery
Vue中的字符串模板的使用
May 17 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 Javascript
原生JS中应该禁止出现的写法
May 05 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 函数中使用static的说明
2012/06/01 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
JavaScript 学习技巧
2010/02/17 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
python+pyqt实现12306图片验证效果
2017/10/25 Python
python清理子进程机制剖析
2017/11/23 Python
Python实现图片尺寸缩放脚本
2018/03/10 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
python增加图像对比度的方法
2019/07/12 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
python中str内置函数用法总结
2020/12/27 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
企业管理培训感言
2014/01/27 职场文书
社区安全检查制度
2014/02/03 职场文书
劳资员岗位职责
2015/02/13 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang