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 window.opener返回父页面的应用
Oct 24 Javascript
jQuery中bind与live的用法及区别小结
Jan 27 Javascript
JS小游戏之象棋暗棋源码详解
Sep 25 Javascript
JavaScript使用yield模拟多线程的方法
Mar 19 Javascript
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
分享JavaScript与Java中MD5使用两个例子
Dec 23 Javascript
jQuery 中ajax异步调用的四种方式
Jun 28 Javascript
JavaScript每天必学之基础知识
Sep 17 Javascript
bootstrap IE8 兼容性处理
Mar 22 Javascript
React如何利用相对于根目录进行引用组件详解
Oct 09 Javascript
使用D3.js+Vue实现一个简单的柱形图
Aug 05 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
May 09 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及Zend Engine的线程安全模型分析
2011/11/10 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
2007/01/09 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
Vue的Class与Style绑定的方法
2017/09/01 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
Python splitlines使用技巧
2008/09/06 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
python3 实现调用串口功能
2019/12/26 Python
python 实现简易的记事本
2020/11/30 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
如何获取某个日期是当月的最后一天
2013/12/05 面试题
股东协议书范本
2014/04/14 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书