浅谈js数组splice删除某个元素爬坑


Posted in Javascript onOctober 14, 2020

先来看下几个概念:

// splice:返回从原始数组中删除的项(如果没有任何删除,则返回空数组)
    // 当指定2个参数时,表示删除
    // 当指定3个参数,且第2个参数为0时表示插入
    // 当指定3个参数,且第2个参数为1时表示替换

本次就拿删除举例,本身我们想删除数组中的某个指定元素,我们需要知道它所在数组中的下标,我们可以用 数组.indexOf获取它所在的下标,然后拿splice删除这个元素。

本身是没问题

代码如下:

var arr = ["张三","李四","王五","赵六"];

// 删除王五
arr.splice(arr.indexOf("王五"),1);

但是。。。。。问题就来了。

如果放到for循环中,比如循环数组,当某个条件成立的时候,我们需要删除某个指定的元素。

但是循环中,i每次都是+1的,但是我们删除某个元素后,下标就变了,相应的位置发生变化,i的值加一后,就会跳过下一个元素。

坑啊。。。

所以,在删除某个元素的时候,我们手动把 i的值再减一,这样就会避免出现跳过某个元素的问题。

例如:循环数组,当 DasOperation  属性值等于 没变 的时候,从数组中删除这条数据,然后i-1

// 删除没有变化的,不传递到后台
for (let i = 0; i < this.CurrJobData.Content.length; i += 1) {
  if (this.CurrJobData.Content[i].DasOperation === '没变') {
    this.CurrJobData.Content.splice(this.CurrJobData.Content.indexOf(this.CurrJobData.Content[i]), 1);
    i -= 1;// 必须对i减去1,否则后面的一个元素会被跳过去
  }
}

好了,为避免更多小伙伴遇坑,贴出来,希望有帮助。

 到此这篇关于浅谈js数组splice删除某个元素爬坑的文章就介绍到这了,更多相关js splice删除某个元素内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
把textarea中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
Apr 20 Javascript
JavaScript脚本性能优化注意事项
Nov 18 Javascript
javascript使用Promise对象实现异步编程
Mar 01 Javascript
Node.js的Koa框架上手及MySQL操作指南
Jun 13 Javascript
Vue常用指令V-model用法
Mar 08 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
Apr 03 Javascript
浅谈在react中如何实现扫码枪输入
Jul 04 Javascript
vue权限路由实现的方法示例总结
Jul 29 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
Aug 24 Javascript
JavaScript canvas动画实现时钟效果
Feb 10 Javascript
Vue 修改网站图标的方法
Dec 31 Vue.js
Vue+Element UI实现概要小弹窗的全过程
May 30 Vue.js
如何使用JS console.log()技巧提高工作效率
Oct 14 #Javascript
JavaScript Blob对象原理及用法详解
Oct 14 #Javascript
基于javascript原生判断DOM是否加载完毕
Oct 14 #Javascript
JavaScript常用进制转换及位运算实例解析
Oct 14 #Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
Oct 14 #Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
Oct 13 #Javascript
原生JS实现相邻月份日历
Oct 13 #Javascript
You might like
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
JS删除数组元素的函数介绍
2013/03/27 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
python 19个值得学习的编程技巧
2020/08/15 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
职业技术学校毕业生推荐信
2013/12/03 职场文书
庆元旦广播稿
2014/02/10 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
保健品市场营销方案
2014/03/31 职场文书
《风筝》教学反思
2014/04/10 职场文书
销售个人求职信范文
2014/04/28 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
接收函格式
2015/01/30 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
小学安全教育主题班会
2015/08/12 职场文书
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python