(一)splice方法

splice 方法用于数组或伪数组,根据参数个数和形式的不同,可以在数组中删除指定元素或者插入元素、替换元素。

1. 参数个数为 1 的情况

1.1 语法

arr.splice(i)

当 splice 方法的参数只有 1 个的时候(i),表示删除数组中索引为 ii 之后的所有元素。返回删除的元素,数组原地修改。其中,参数 i 是整数。
对于 i 分情况:

  • i 为非负整数:删除数组中索引为 ii 之后位置上所有的元素
  • i 为负整数:索引从后往前计算,最后一位索引是 -1,倒数第二位是 -2,依次类推。删除 ii 之后的所有元素。

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 方法

使用的时候很容易混淆 spliceslice 方法,记住 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 完全解读相关推荐

  1. 前后端交互必备之js数组方法大全

    CSDN写作新手,写的不妥之处,请大佬纠正且多多包涵. 文章目录 数组简介 一.js数组方法 二.js数组方法的使用 1.基础方法 2.进阶方法 数组简介 数组,就是将多个元素(通常是同一类型)按一定 ...

  2. 22个超详细的 JS 数组方法

    22个超详细的 JS 数组方法 数组是 js 中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工作效率,同时对我们的代码质量也是有很大影响. 一.创建数组 1.使用数组 ...

  3. 给数组倒序_22个超详细的 JS 数组方法

    作者:Yushiahttps://juejin.cn/post/6907109642917117965 数组是 js 中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工 ...

  4. android给数组添加新元素_重磅!超详细的 JS 数组方法整理出来了

    作者:Yushiahttps://juejin.cn/post/6907109642917117965 数组是 js 中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工 ...

  5. js遍历对象、遍历数组、js数组方法大全、区分map()和forEach()以及filter()、区分for...in...和for...of...

    1.给对象添加属性:使用 object.prop 或object['prop']  给对象添加属性 let obj={};obj.name="zhangsan";obj[" ...

  6. JS的组成-JS数组方法-JS函数-系统化学习

    JS Day01 什么是js的组成? ECMAScript(es) 其实就是js的规范(规则) DOM 文档对象模型 div span BOM 浏览器对象模型 JS的使用方式 行内样式的书写(不经常使 ...

  7. JS数组方法中哪些会改变原数组,哪些不会?

    前言 作为一名前端开发人员,我们每天都会与数组打交道.JS 也提供了很多操作数组的原生 API 供我们调用.在这些方法里面,有的方法会改变原数组,有些不会改变原数组.别看这一点小小的区别,往往会造成巨 ...

  8. 几个关于js数组方法reduce的经典片段

    以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...

  9. js数组方法-改变原数组和不改变原数组的方法整理

    改变原数组: pop():   删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值.如果数组已经为空,则 pop() 不 改变数组,并返回 undefined ...

  10. 关于js数组方法的题目整理 6.24更新至题目5

    目录 题目一: 题目二  把问题1变回去 题目三 要求:1.给出一个名字找出数组中 与 '名字' 处于统一领导下的同事 2.给出一个名字找出数组中 与 '名字' 下的下属 题目四: 解法一: 解法二: ...

最新文章

  1. 急我所需!机器学习、深度学习绘图模板.ppt
  2. python 中的for i in range()的使用(for _ in range())
  3. Guice系列之用户指南(五)
  4. TensorFlow、MXNet、Keras如何取舍? 常用深度学习框架对比
  5. SQL 日期格式 问题
  6. 信息化、数字化和数字化转型的本质是什么?
  7. 一汽大众将召回3.7万辆存自燃隐患车辆
  8. 2021年SWPUACM暑假集训day1二分算法
  9. 微信小程序斩获世界大奖后,中小企业怎样搭上这辆快速列车?
  10. C中常量数组不能修改
  11. 计算机文化基础练习题及答案
  12. ROS中使用RPLIDAR激光雷达
  13. 搭档之家|新零售:社交电商的光明尽头
  14. selectpicker的使用方法
  15. python 基于Tkinter的姻缘测试器
  16. 腾讯要放弃 TIM 了?
  17. 别只关注M1芯片的苹果笔记本,iOS APP支持在 Mac上运行也是大事
  18. 【ARXML专题】_14_提取Arxml中CAN Signal信号信息
  19. Redis 全实践(超长文预警)
  20. C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果

热门文章

  1. 如何隐藏计算机桌面窗口,电脑如何设置切换任务时可以隐藏已打开的窗口?[多图]...
  2. python中value的含义_python中value的意思
  3. 解决OSS传输的文本文件网页打开乱码
  4. p2p终结者在交换机上的机器用P2P终结者
  5. 梦想,因坚持而绽放——答大学生的兴趣与行动
  6. 伊利诺伊香槟分校计算机排名,伊利诺伊大学香槟分校计算机工程硕士排名第8(2020年TFE Times排名)...
  7. GMap.NET 使用教程【1】
  8. 高级项目经理的企业需求、企业地位
  9. 在linux开发板上显示图片,制作开发板的logo标签
  10. 应用程序池是个什么东东?