JS 数组方法 splice 完全解读
(一)splice方法
splice 方法用于数组或伪数组,根据参数个数和形式的不同,可以在数组中删除指定元素或者插入元素、替换元素。
1. 参数个数为 1 的情况
1.1 语法
arr.splice(i)
当 splice 方法的参数只有 1 个的时候(i
),表示删除数组中索引为 i
及 i
之后的所有元素。返回删除的元素,数组原地修改。其中,参数 i
是整数。
对于 i
分情况:
- i 为非负整数:删除数组中索引为
i
及i
之后位置上所有的元素 - i 为负整数:索引从后往前计算,最后一位索引是
-1
,倒数第二位是-2
,依次类推。删除i
及i
之后的所有元素。
1.2 举例
删除数组中最后三个元素
var a = [1, 2, 3, 4, 5]
a.splice(-3)
console.log(a) // [1, 2]
清空数组
var a = [1, 2, 3, 4, 5]
a.splice(0) // 或 a.splice(-5)
console.log(a) // []
2. 参数个数为 2 的情况
2.1 语法
arr.splice(i, j)
当 splice 方法有两个参数时,两个参数必须均为整数。表示从数组中索引为 i
开始删除,一共删除 j
个元素。
2.2 示例
删除数组中开头的 3 个元素
var a = [1, 2, 3, 4, 5]
a.splice(0, 3)
console.log(a) // [4, 5]
只留下数组值第一个和最后一个元素
var a = [1, 2, 3, 4, 5]
a.splice(1, a.length - 2)
console.log(a) // [1, 5]
从索引 -2 的位置开始删除 2 个元素
var a = [1, 2, 3, 4, 5]
a.splice(-2, 2)
console.log(a) // [1, 2, 3]
3. 参数个数为 3 或 3 个以上的情况
3.1 语法
a.splice(i, j, e1, e2, ...)
i
:整数,表示索引的起始位置j
:整数,表示删除的个数e1、e2、...
:删除相应元素之后要添加的元素
当 splice 方法有 3 个参数时,表示从索引为 i
位置开始删除 j
个元素,然后在从 i
位置添加 e1,e2,...
,返回删除的元素,原地修改。
- 若
j
为 0,则表示一个元素也不删除,则元素从 i 前一个位置开始插入 - 若
j
> 0,则表示从i
位置开始(包括i
位置)删除j
个元素,然后从i
后面开始插入。
3.2 示例
替换索引位置为 2 的元素的值为 'aaa'
var a = [1, 2, 3, 4, 5]
a.splice(2, 1, 'aaa')
console.log(a) // [1, 2, 'aaa', 4, 5]
a.splice(2, 1, 'aaa')
表示从索引为 2 开始,删除 1 个元素,并插入 'aaa'
(即实现了替换,替换了索引为 2 的元素)。
往数组中索引为 1 的位置插入元素 'a'
、'b'
、c
。
var a = [1, 2, 3, 4, 5]
a.splice(1, 0, 'a', 'b', 'c')
console.log(a)
// [1, 'a', 'b', 'c', 2, 3, 4, 5]
往数组中索引为 -2 的位置插入元素 'a'
、'b'
。
var a = [1, 2, 3, 4, 5]
a.splice(-2, 0, 'a', 'b')
console.log(a)
// [1, 2, 3, 'a', 'b', 4, 5]
往数组的开头插入 3 个元素。
var a = [1, 2, 3]
a.splice(0, 0, 'a', 'b', 'c')
console.log(a)
// ['a', 'b', 'c', 1, 2, 3]
往数组的末尾插入 3 个元素。
var a = [1, 2, 3]
a.splice(a.length, 0, 'a', 'b', 'c')
console.log(a)
// [1, 2, 3, 'a', 'b', 'c']
(二)slice 方法
使用的时候很容易混淆 splice
和 slice
方法,记住 splice 方法只能用于数组,而 slice 方法可以用于数组和字符串,表示 “切片”。
arr.slice(i, j)
// 或 str.slice(i, j)
arr.slice(i, j)
表示将数组/字符串从 [i, j)
(分界是前开后闭)切片,然后返回取出的片段,非原地操作,不改变原数组/字符串。
取出字符串剔除了首个和末尾的子串:
var str = 'abcdef'
var sub = str.slice(1, -1)
console.log(sub) // 'bcde'
类似的,slice
也能作用于数组:
var arr = [1, 2, 3, 4, 5]
var sub = arr.slice(1, 4)
console.log(sub) // [2, 3, 4]
JS 数组方法 splice 完全解读相关推荐
- 前后端交互必备之js数组方法大全
CSDN写作新手,写的不妥之处,请大佬纠正且多多包涵. 文章目录 数组简介 一.js数组方法 二.js数组方法的使用 1.基础方法 2.进阶方法 数组简介 数组,就是将多个元素(通常是同一类型)按一定 ...
- 22个超详细的 JS 数组方法
22个超详细的 JS 数组方法 数组是 js 中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工作效率,同时对我们的代码质量也是有很大影响. 一.创建数组 1.使用数组 ...
- 给数组倒序_22个超详细的 JS 数组方法
作者:Yushiahttps://juejin.cn/post/6907109642917117965 数组是 js 中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工 ...
- android给数组添加新元素_重磅!超详细的 JS 数组方法整理出来了
作者:Yushiahttps://juejin.cn/post/6907109642917117965 数组是 js 中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工 ...
- js遍历对象、遍历数组、js数组方法大全、区分map()和forEach()以及filter()、区分for...in...和for...of...
1.给对象添加属性:使用 object.prop 或object['prop'] 给对象添加属性 let obj={};obj.name="zhangsan";obj[" ...
- JS的组成-JS数组方法-JS函数-系统化学习
JS Day01 什么是js的组成? ECMAScript(es) 其实就是js的规范(规则) DOM 文档对象模型 div span BOM 浏览器对象模型 JS的使用方式 行内样式的书写(不经常使 ...
- JS数组方法中哪些会改变原数组,哪些不会?
前言 作为一名前端开发人员,我们每天都会与数组打交道.JS 也提供了很多操作数组的原生 API 供我们调用.在这些方法里面,有的方法会改变原数组,有些不会改变原数组.别看这一点小小的区别,往往会造成巨 ...
- 几个关于js数组方法reduce的经典片段
以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...
- js数组方法-改变原数组和不改变原数组的方法整理
改变原数组: pop(): 删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值.如果数组已经为空,则 pop() 不 改变数组,并返回 undefined ...
- 关于js数组方法的题目整理 6.24更新至题目5
目录 题目一: 题目二 把问题1变回去 题目三 要求:1.给出一个名字找出数组中 与 '名字' 处于统一领导下的同事 2.给出一个名字找出数组中 与 '名字' 下的下属 题目四: 解法一: 解法二: ...
最新文章
- 急我所需!机器学习、深度学习绘图模板.ppt
- python 中的for i in range()的使用(for _ in range())
- Guice系列之用户指南(五)
- TensorFlow、MXNet、Keras如何取舍? 常用深度学习框架对比
- SQL 日期格式 问题
- 信息化、数字化和数字化转型的本质是什么?
- 一汽大众将召回3.7万辆存自燃隐患车辆
- 2021年SWPUACM暑假集训day1二分算法
- 微信小程序斩获世界大奖后,中小企业怎样搭上这辆快速列车?
- C中常量数组不能修改
- 计算机文化基础练习题及答案
- ROS中使用RPLIDAR激光雷达
- 搭档之家|新零售:社交电商的光明尽头
- selectpicker的使用方法
- python 基于Tkinter的姻缘测试器
- 腾讯要放弃 TIM 了?
- 别只关注M1芯片的苹果笔记本,iOS APP支持在 Mac上运行也是大事
- 【ARXML专题】_14_提取Arxml中CAN Signal信号信息
- Redis 全实践(超长文预警)
- C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果
热门文章
- 如何隐藏计算机桌面窗口,电脑如何设置切换任务时可以隐藏已打开的窗口?[多图]...
- python中value的含义_python中value的意思
- 解决OSS传输的文本文件网页打开乱码
- p2p终结者在交换机上的机器用P2P终结者
- 梦想,因坚持而绽放——答大学生的兴趣与行动
- 伊利诺伊香槟分校计算机排名,伊利诺伊大学香槟分校计算机工程硕士排名第8(2020年TFE Times排名)...
- GMap.NET 使用教程【1】
- 高级项目经理的企业需求、企业地位
- 在linux开发板上显示图片,制作开发板的logo标签
- 应用程序池是个什么东东?