js splice坑_JavaScript的splice()方法在for循环中使用可能会遇到的坑!!!
在我们日常敲代码的时候,常常会用到splice()方法来删除数组中的元素(就是以截取的方式),因为它会直接对数组进行修改。
在使用splice之前,必备条件是,要先有一个数组。
var arr = new Array(1,2,3,4,5); // 初始化一个数组
var deleteNumber = 3; // 要删除的元素
// 遍历数组
for(var i=0; i < arr.length; i++){
if(arr[i] === deleteNumber){ // 如果和要删除的元素相等
var num = arr.splice(i,1);
console.log("成功删除" + num)
} else {
console.log(arr[i] + "未被删除");
}
}
可以看到,3已经被成功删除,但是4跑哪去了呢???
前面说过,splice 是直接操作并修改数组的,所以当找到数字3时在循环中的 i 下标是2,而当删除数字3后,数组下标 i 位置中保存的数字变为了数字4,然后到了下一个循环 i 下标为3时,数组下标 i 位置中保存的数字是5,所以跳过了数字4,于是调试信息中没有可爱的数字4。。。原理就是这样子,是不是很绕。
那怎么解决漏掉了数字4这个问题呢???很简单,在使用 splice 的下一句,改一下循环变量值即可。。。
if(arr[i] === deleteNumber){
var num = arr.splice(i,1); //从i位置开始删除一个数字
i = i -1; // 解决方案
}
但是还有一种解决方法就是从后往前遍历,但是本人如果没有条件限制的话更喜欢用forEach进行遍历,所以 i = i -1这种解决方式还是挺方便的。
js splice坑_JavaScript的splice()方法在for循环中使用可能会遇到的坑!!!相关推荐
- js 获取当前网站域名的方法
上午在做一个小项目时,需要从后台取到网页的路径并在前台用JS代码组合成网址再跳转.难度不是很大,主要是需要用到 js 代码获取当前网址的主域名,那么这篇博文,飞鸟慕鱼博客就来和大家说一说,js获取当前 ...
- html 当前域名,js 获取当前网站域名的方法
上午在做一个小项目时,需要从后台取到网页的路径并在前台用JS代码组合成网址再跳转.难度不是很大,主要是需要用到 js 代码获取当前网址的主域名,那么这篇博文,飞鸟慕鱼博客就来和大家说一说,js获取当前 ...
- JS之数组删除/添加项目方法splice
用法:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目 注:1:该方法会改变原始数组 语法:arrayObject.splice(index,howmany,item1,-.., ...
- slice(),splice(),split(),substring(),substr()使用方法和区别
<一> 1.slice(): Array和String对象都有 在Array中 slice(i,[j]) i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个元素 j为结束 ...
- js 数组 pop,push,unshift,splice,shift
<script> Array.prototype.pop=function(){ if(this.length!=0)this.length--; r ...
- js截取数组slice() 和 splice() 的用法
一句话先提前概括: slice(start,end) 从哪到哪开始 splice(strt,end,index1,index2) 从什么位置开始,删几个?删了后插入什么新元素? 注意:slice() ...
- JavaScript笔记6(数组,foreach(),slice(),splice(),数组的剩余方法,函数的方法call和apply ,arguments,Date对象,Math,字符串的相关方法)
JavaScript 数组(Array) forEach(),slice(),splice() 数组的剩余方法 函数的方法call()和apply() arguments Date对象 Math 字符 ...
- php js获取文件大小,js+ajax实现获取文件大小的方法_javascript技巧
本文实例讲述了js+ajax实现获取文件大小的方法.分享给大家供大家参考,具体如下: 顾名思义,通过JS和Ajax来获取上传文件的大小,在上传之前可以有个判断,对上传的文件有所控制,因为js控制文件大 ...
- js处理字符串、数组的方法
文章目录 处理字符串 1.js把字符串处理成数组的两种方式 2.截取指定长度字符串 1) substr() 和 substring() 2)slice 3.将字符串分割成子字符串数组 1)split ...
最新文章
- ThoughtWorks代码挑战——FizzBuzzWhizz
- 构建论文框架的八条原则
- mpvue 踩坑之src数据绑定出错
- oracle一体机flash卡,PCIe Flash卡设备的测试
- 题目2 : 回文字符序列(区间DP)
- ie检查服务器证书吊销,浏览器弹出“该站点安全证书吊销信息不可用是否继续”解决方法...
- 第5章 简易毛笔字(《Python趣味创意编程》教学视频)
- linux socket tcp程序,Linux下Socket TCP的简单例子
- java内存溢出无法创建线程_kafka生产者发送消息失败导致内存溢出java.lang.OutOfMemoryError:Java heap space,请教如何解决?...
- 电脑重启桌面 计算机图标消失,电脑重启后桌面图标不见了怎么解决
- 管家婆服装.NET II TOP V6.5-采购入库单(一)
- ARTPI(STM32H750XBH) + ALIENTEK 7‘ RGB TFTLCD + LVGL8.2.0成功
- facebook登陆,如何邀请玩家成为测试人员
- 独到科技CEO:十年扎根社交数据,用AI技术帮助企业更好服务消费者
- html点击图片弹出模态框,JS实现图片点击后出现模态框效果
- 人工智能基础之美女和野人过河问题
- 【C语言】案例四十六 点名册(一)
- 电子商务 实训三:电子商店策划实训
- python爬虫必备防检测工具
- 我不是来表扬你们的 欢庆更多朋友一起来点赞
热门文章
- java 观察者模式示例_Java中的观察者设计模式-示例教程
- Java命令行界面(第14部分):google-options
- Java 9中的进程处理
- couchbase_Couchbase 101:从Java应用程序创建视图(MapReduce)
- Spring Boot,@ EnableWebMvc和常见用例
- java锁实现_Java锁实现
- ruby和python_Ruby,Python和Java中的Web服务
- lambda语法_Java Lambda语法替代
- Java中的线程本地存储
- JPA 2.1类型转换器–保留枚举的更好方法