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 相关文章推荐
获取dom元素那些讨厌的位置封装代码
Jun 23 Javascript
javascript学习笔记(九) js对象 设计模式
Jun 19 Javascript
节点的插入之append()和appendTo()的用法介绍
Jan 13 Javascript
Node.js程序中的本地文件操作用法小结
Mar 06 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
May 25 Javascript
Javascript日期格式化format函数的使用方法
Aug 30 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
Jul 26 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
Jan 02 jQuery
jQuery动态移除与增加onclick属性的方法详解
Jun 07 jQuery
vuejs实现折叠面板展开收缩动画效果
Sep 06 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
Layui动态生成select下拉选择框不显示的解决方法
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中注册器模式类用法实例分析
2015/11/03 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
2017/09/06 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
Django中几种重定向方法
2015/04/28 Python
Python迭代和迭代器详解
2016/11/10 Python
python+opencv实现动态物体识别
2018/01/09 Python
Python tkinter事件高级用法实例
2018/01/31 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
服务行业口号
2014/06/11 职场文书
采购部长岗位职责
2014/06/13 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
2014年科研工作总结
2014/12/03 职场文书
人工作失职检讨书
2015/05/05 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书