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 相关文章推荐
十分钟打造AutoComplete自动完成效果代码
Dec 26 Javascript
JS Excel读取和写入操作(模板操作)实现代码
Apr 11 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
Mar 17 Javascript
javascript常见数字进制转换实例分析
Apr 21 Javascript
js 博客内容进度插件详解
Feb 19 Javascript
bootstrap选项卡扩展功能详解
Jun 14 Javascript
动态统计当前输入内容的字节、字符数的实例详解
Oct 27 Javascript
JS获取input[file]的值并显示在页面的实现方法
Mar 09 Javascript
vue2使用keep-alive缓存多层列表页的方法
Sep 21 Javascript
PM2自动部署代码步骤流程总结
Dec 10 Javascript
通过实例了解JS执行上下文运行原理
Jun 17 Javascript
js实现复制粘贴的两种方法
Dec 04 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面向对象全攻略 (五) 封装性
2009/09/30 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
JS随机洗牌算法之数组随机排序
2016/03/23 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
js编写选项卡效果
2017/05/23 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
深入了解JS之作用域和闭包
2020/06/16 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
pyqt5实现登录界面的模板
2020/05/30 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
美国休闲服装品牌:Express
2016/09/24 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
低碳环保口号
2014/06/12 职场文书
党员剖析材料范文
2014/09/30 职场文书
python中subplot大小的设置步骤
2021/06/28 Python
入门学习Go的基本语法
2021/07/07 Golang