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 相关文章推荐
JS创建优美的页面滑动块效果 - Glider.js
Sep 27 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
Mar 01 Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 Javascript
js确认删除对话框适用于a标签及submit
Jul 10 Javascript
js对字符的验证方法汇总
Feb 04 Javascript
js实现人才网站职位选择功能的方法
Aug 14 Javascript
通过构造函数实例化对象的方法
Jun 28 Javascript
vue2.0在table中实现全选和反选的示例代码
Nov 04 Javascript
全面介绍vue 全家桶和项目实例
Dec 27 Javascript
jQuery中元素选择器(element)简单用法示例
May 14 jQuery
vue中v-model的应用及使用详解
Jun 27 Javascript
微信小程序里引入SVG矢量图标的方法
Sep 20 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以mysqli方式连接类完整代码实例
2014/07/15 PHP
php微信支付之APP支付方法
2015/03/04 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
Python编程之变量赋值操作实例分析
2017/07/24 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
基于Python实现天天酷跑功能
2021/01/06 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
eBay德国站:eBay.de
2017/09/14 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
财务会计专业推荐信
2013/11/30 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
2014年采购部工作总结
2014/11/20 职场文书
大学生个人学年总结
2015/02/15 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
千手观音观后感
2015/06/03 职场文书
增值税发票丢失证明
2015/06/19 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技