JavaScrip数组删除特定元素的几种方法总结


Posted in Javascript onSeptember 06, 2017

前言

可能一说到删除数组特定元素你估计不止一种方法可以实现,那么下面且来看看我总结的这几种方法,可能会对你有所帮助!话不多说了,来一起看看详细的介绍吧。

源数组

var arr = ["George", "John", "Thomas", "James", "Adrew", "Martin"];

伪删除

什么是伪删除呢? 就是说将数组元素值设置为null;

arr[ arr.indexOf( 'Thomas' ) ] = null;

删除后的数组是这个样子的:

["George", "John", null, "James", "Adrew", "Martin"]

不过要注意, 这意味着数组Array也就是变量arr的长度保持不变

完全删除

是什么是完全删除呢? 这个问题你可能从字面上也能想得到就是真正的删除数组Array的元素值, 并且会改变数组的长度, 可以通过内置数组对象Array的splice方法来实现这个需求!说到splice这个方法就要说一说它的具体参数了:

Array.prototype.splice = function(start,deleteCount,items) {};

上面是内置对象Array的splice方法原型定义, 中文意思呢是:剪接, 其参数的意义是:

  • start: 起点索引值
  • deleteCount: 要删除的元素个数
  • items: 删除后替换/追加的元素
    参数不加时就表示删除元素, 并且还要结合 deleteCount 的参数值
    如果 deleteCount 为 1, items 参数位置给一个参数值, 则表示替换
    如果 deleteCount 为 1, items 参数位置给多于一个的参数值, 则表示替换及追加元素

通过splice方法删除上面 伪删除 留下的元素值 null

arr.splice( arr.indexOf( null ), 1 );

删除后的数组是这个样子的:

["George", "John", "James", "Adrew", "Martin"]

既然说到了splice方法就顺便再说一下它的其它功能, 如 替换元素, 追加元素 等操作吧!

splice函数 - 替换元素

现在数组结构是这样的:

["George", "John", "James", "Adrew", "Martin"]

想要将数组元素 James 替换为 Tom

arr.splice( arr.indexOf( 'James' ), 1, 'Tom' );

替换后的数组结构是这个样子的:

["George", "John", "Tom", "Adrew", "Martin"]

splice函数 - 替换并追加元素

现在当前数组结构是这样的:

["George", "John", "Tom", "Adrew", "Martin"]

想要将数组元素 Tom 替换为 Judy 并追加 Linda 和 Alisa

arr.splice( arr.indexOf( 'Tom' ), 1, 'Judy', 'Linda', 'Alisa' );

替换及追加后的数组结构是这个样子的:

["George", "John", "Judy", "Linda", "Alisa", "Adrew", "Martin"]

splice函数 - 追加元素

追加元素你可以选择任意位置这取决于你的具体需求, 关键是在于 start 的取值索引位置而已!当前数组结构如下所示:

["George", "John", "Judy", "Linda", "Alisa", "Adrew", "Martin"]

比如说要在 Linda 和 Alisa 之间追加 Bill 和 Blake

arr.splice( arr.indexOf( 'Linda' ) + 1, 0, 'Bill', 'Blake' );

追加后的数组结构是下面这个样子的:

["George", "John", "Judy", "Linda", "Bill", "Blake", "Alisa", "Adrew", "Martin"]
  • 起点位置 arr.indexOf( 'Linda' ) + 1 就是在数组元素 Linda 之后了
  • 删除元素个数参数这里设置的是 0 这个是追加元素的关键, 也就是说不删除元素
  • 'Bill', 'Blake' 这个呢就是内置对象Array的splice方法的最后一个参数 items 它表示0个是和多个, 根据 deleteCount 参数值不同表示的含义也会不同, 这里 deleteCount 参数是 0 并且 items 又有两个值来表示这个参数, 所示说就是追加元素值 'Bill', 'Blake'

以上说的是删除数组中特定的元素, 那删除第一个元素和最后一个元素那实现在是太简单了, 这里简单提一下就是了

删除数组中第一个元素

arr.shift();

删除后的数组是这个样子的:

["John", "Judy", "Linda", "Bill", "Blake", "Alisa", "Adrew", "Martin"]

删除数组中最后一个元素

arr.pop();

删除后的数组是这个样子的:

["John", "Judy", "Linda", "Bill", "Blake", "Alisa", "Adrew"]

总结

以上就是JavaScrip数组删除特定元素个人所总结的一些方法,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果您还要其它的一些好的方法, 或有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
js 页面输出值
Nov 30 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
Mar 22 Javascript
JS之Date对象和获取系统当前时间详解
Jan 13 Javascript
javascript倒计时效果实现
Nov 12 Javascript
JavaScript 链式结构序列化详解
Sep 30 Javascript
js实现符合国情的日期插件详解
Jan 19 Javascript
jQuery表格(Table)基本操作实例分析
Mar 10 Javascript
es6的数字处理的方法(5个)
Mar 16 Javascript
ES6新增的math,Number方法
Aug 06 Javascript
vue修改对象的属性值后页面不重新渲染的实例
Aug 09 Javascript
如何基于JavaScript判断图片是否加载完成
Dec 28 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
Mar 17 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
Sep 06 #jQuery
JavaScript学习笔记之函数记忆
Sep 06 #Javascript
node.js实现的装饰者模式示例
Sep 06 #Javascript
JavaScript使用FileReader实现图片上传预览效果
Mar 27 #Javascript
js防刷新的倒计时代码 js倒计时代码
Sep 06 #Javascript
JavaScript中运算符规则和隐式类型转换示例详解
Sep 06 #Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
Sep 06 #Javascript
You might like
Zend Guard一些常见问题解答
2008/09/11 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
python多线程抓取天涯帖子内容示例
2014/04/03 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
python3注册全局热键的实现
2020/03/22 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
8种常用的Python工具
2020/08/05 Python
用Python 执行cmd命令
2020/12/18 Python
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
建筑工程毕业生自我鉴定
2014/01/14 职场文书
校本教研工作制度
2014/01/22 职场文书
银行工作检查书范文
2014/01/31 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
廉政承诺书
2015/01/19 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书
Consul在linux环境的集群部署
2022/04/08 Servers
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技