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 相关文章推荐
JavaScript 继承详解(四)
Jul 13 Javascript
jQuery入门问答 整理的几个常见的初学者问题
Feb 22 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
Oct 31 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 Javascript
EasyUI中在表单提交之前进行验证
Jul 19 Javascript
微信小程序 网络API发起请求详解
Nov 09 Javascript
JS访问DOM节点方法详解
Nov 29 Javascript
Angularjs中使用指令绑定点击事件的方法
Mar 30 Javascript
基于vue.js路由参数的实例讲解——简单易懂
Sep 07 Javascript
浅谈AngularJS中$http服务的简单用法
May 15 Javascript
如何从零开始手写Koa2框架
Mar 22 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
Sep 11 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下连接mssql2005的代码
2011/01/17 PHP
PHP微信分享开发详解
2017/01/14 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
js闭包实例汇总
2014/11/09 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
深入Python函数编程的一些特性
2015/04/13 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
Django中的文件的上传的几种方式
2018/07/23 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
flask框架路由常用定义方式总结
2019/07/23 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
python打印异常信息的两种实现方式
2019/12/24 Python
如何用Python徒手写线性回归
2021/01/25 Python
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
维稳工作情况汇报
2014/10/27 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
武夷山导游词
2015/02/03 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
教你用python实现一个无界面的小型图书管理系统
2021/05/21 Python
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript