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 append() html时的小问题的解决方法
Dec 16 Javascript
中国地区三级联动下拉菜单效果分析
Nov 15 Javascript
用jquery写的一个万年历(自写)
Jan 20 Javascript
jquery+ajax验证不通过也提交表单问题处理
Dec 12 Javascript
jQuery插件windowScroll实现单屏滚动特效
Jul 14 Javascript
PHP抓取HTTPS内容和错误处理的方法
Sep 30 Javascript
jquery uploadify如何取消已上传成功文件
Feb 08 Javascript
JavaScript取得gridview中获取checkbox选中的值
Jul 24 Javascript
Vue+Vux项目实践完整代码
Nov 30 Javascript
微信小程序实现左滑动删除效果
Mar 30 Javascript
原生js实现滑块区间组件
Jan 20 Javascript
详解Vue3使用axios的配置教程
Apr 29 Vue.js
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系列学习之日期函数使用介绍
2012/08/18 PHP
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
Angular 4环境准备与Angular cli创建项目详解
2017/05/27 Javascript
Node学习记录之cluster模块
2017/05/31 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
python之Socket网络编程详解
2016/09/29 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
pygame实现打字游戏
2021/02/19 Python
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
设计师个人求职信范文
2014/02/02 职场文书
计划生育标语
2014/06/23 职场文书
会计电算化实训报告
2014/11/04 职场文书
如何才能写好调研报告?
2019/07/03 职场文书