在我们日常敲代码的时候,常常会用到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循环中使用可能会遇到的坑!!!相关推荐

  1. js 获取当前网站域名的方法

    上午在做一个小项目时,需要从后台取到网页的路径并在前台用JS代码组合成网址再跳转.难度不是很大,主要是需要用到 js 代码获取当前网址的主域名,那么这篇博文,飞鸟慕鱼博客就来和大家说一说,js获取当前 ...

  2. html 当前域名,js 获取当前网站域名的方法

    上午在做一个小项目时,需要从后台取到网页的路径并在前台用JS代码组合成网址再跳转.难度不是很大,主要是需要用到 js 代码获取当前网址的主域名,那么这篇博文,飞鸟慕鱼博客就来和大家说一说,js获取当前 ...

  3. JS之数组删除/添加项目方法splice

    用法:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目 注:1:该方法会改变原始数组 语法:arrayObject.splice(index,howmany,item1,-.., ...

  4. slice(),splice(),split(),substring(),substr()使用方法和区别

    <一> 1.slice(): Array和String对象都有 在Array中  slice(i,[j]) i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个元素 j为结束 ...

  5. js 数组 pop,push,unshift,splice,shift

    <script>    Array.prototype.pop=function(){         if(this.length!=0)this.length--;         r ...

  6. js截取数组slice() 和 splice() 的用法

    一句话先提前概括: slice(start,end) 从哪到哪开始 splice(strt,end,index1,index2) 从什么位置开始,删几个?删了后插入什么新元素? 注意:slice() ...

  7. JavaScript笔记6(数组,foreach(),slice(),splice(),数组的剩余方法,函数的方法call和apply ,arguments,Date对象,Math,字符串的相关方法)

    JavaScript 数组(Array) forEach(),slice(),splice() 数组的剩余方法 函数的方法call()和apply() arguments Date对象 Math 字符 ...

  8. php js获取文件大小,js+ajax实现获取文件大小的方法_javascript技巧

    本文实例讲述了js+ajax实现获取文件大小的方法.分享给大家供大家参考,具体如下: 顾名思义,通过JS和Ajax来获取上传文件的大小,在上传之前可以有个判断,对上传的文件有所控制,因为js控制文件大 ...

  9. js处理字符串、数组的方法

    文章目录 处理字符串 1.js把字符串处理成数组的两种方式 2.截取指定长度字符串 1) substr() 和 substring() 2)slice 3.将字符串分割成子字符串数组 1)split ...

最新文章

  1. ThoughtWorks代码挑战——FizzBuzzWhizz
  2. 构建论文框架的八条原则
  3. mpvue 踩坑之src数据绑定出错
  4. oracle一体机flash卡,PCIe Flash卡设备的测试
  5. 题目2 : 回文字符序列(区间DP)
  6. ie检查服务器证书吊销,浏览器弹出“该站点安全证书吊销信息不可用是否继续”解决方法...
  7. 第5章 简易毛笔字(《Python趣味创意编程》教学视频)
  8. linux socket tcp程序,Linux下Socket TCP的简单例子
  9. java内存溢出无法创建线程_kafka生产者发送消息失败导致内存溢出java.lang.OutOfMemoryError:Java heap space,请教如何解决?...
  10. 电脑重启桌面 计算机图标消失,电脑重启后桌面图标不见了怎么解决
  11. 管家婆服装.NET II TOP V6.5-采购入库单(一)
  12. ARTPI(STM32H750XBH) + ALIENTEK 7‘ RGB TFTLCD + LVGL8.2.0成功
  13. facebook登陆,如何邀请玩家成为测试人员
  14. 独到科技CEO:十年扎根社交数据,用AI技术帮助企业更好服务消费者
  15. html点击图片弹出模态框,JS实现图片点击后出现模态框效果
  16. 人工智能基础之美女和野人过河问题
  17. 【C语言】案例四十六 点名册(一)
  18. 电子商务 实训三:电子商店策划实训
  19. python爬虫必备防检测工具
  20. 我不是来表扬你们的 欢庆更多朋友一起来点赞

热门文章

  1. java 观察者模式示例_Java中的观察者设计模式-示例教程
  2. Java命令行界面(第14部分):google-options
  3. Java 9中的进程处理
  4. couchbase_Couchbase 101:从Java应用程序创建视图(MapReduce)
  5. Spring Boot,@ EnableWebMvc和常见用例
  6. java锁实现_Java锁实现
  7. ruby和python_Ruby,Python和Java中的Web服务
  8. lambda语法_Java Lambda语法替代
  9. Java中的线程本地存储
  10. JPA 2.1类型转换器–保留枚举的更好方法