数组截取splice_splice返回值

数组截取splice_splice返回值Javascript数组的splice方法介绍splice()方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。语法格式array.splice(start[,deleteCount[,item1[,item2[,…]]]])参数start必选指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数,这意味着-n是倒数第n个元素并且等价于

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Javascript数组的 splice 方法介绍

splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。

语法格式

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

参数

  • start 必选

    指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数,这意味着-n是倒数第n个元素并且等价于array.length-n);如果负数的绝对值大于数组的长度,则表示开始位置为第0位。

  • deleteCount 可选

    整数,表示要移除的数组元素的个数。如果 deleteCount 大于 start 之后的元素的总数,则从 start 后面的元素都将被删除(含第 start 位)。如果 deleteCount 被省略了,或者它的值大于等于array.length - start(也就是说,如果它大于或者等于start之后的所有元素的数量),那么start之后数组的所有元素都会被删除。如果 deleteCount 是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。

  • item1, item2, *...* 可选

    要添加进数组的元素,从start 位置开始。如果不指定,则 splice() 将只删除数组元素。

返回值

由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。

描述

如果添加进数组的元素个数不等于被删除的元素个数,数组的长度会发生相应的改变。

牛刀小试

现在有一个场景,我和我的室友们,现在在一个数组里面。 按照排行分别为: 老大,老二,老三, … ,老六, 小七.

这里 我用 下面的数组进行举例

var arr = ['Liu laoda','Li laoer','Wei laosan','Frank','Guan laowu','Yang laoliu','Li xiaoqi'];

删除元素

删除一个元素,删除 某个位置的元素

var arr = ['Liu laoda','Li laoer','Wei laosan','Frank'];

// start 开始位置,从零开始 , deleteCount 删除个数,从1 开始
// arr.splice(start,count)
// 删除第0位置的一个元素
arr.splice(0,1);
console.log('arr=',arr);

在这里插入图片描述

可以看到 第0号位置 'Liu laoda' 被删除了。

删除前面两个元素

var arr = ['Liu laoda','Li laoer','Wei laosan','Frank'];
// 删除 前两个元素
arr.splice(0,2);
console.log('arr=',arr);  // ['Wei laosan', 'Frank']

添加元素 并且替换元素

splice 删除元素后 会返回被删除的元素,返回类型是一个 Array 类型.

example1

这里可以进行元素替换,替换之后直接会影响 原来的数组的。返回的是删除的数组元素

var arr = ['Liu laoda','Li laoer','Wei laosan','Frank'];

// 添加元素,删除元素 用 Guan laowu 替换掉
// 从1号位置删除一个元素,插入 元素 'Guan laowu'
// 返回被删除的元素
console.log('before arr=',arr);
var removed = arr.splice(1, 1, 'Guan laowu');
console.log('arr=',arr);
console.log('removed=',removed);   // removed.constructor.name == Array

在这里插入图片描述

example2

删除的个数和添加的元素的个数可以是不一样的。

var arr = ['Liu laoda','Li laoer','Wei laosan','Frank'];
console.log('before arr=',arr);
// 删除 idx=1的元素,并且 添加 在此位置 依次添加4个元素。
var removed = arr.splice(1, 1, 'Guan laowu','A','B','C');
console.log('arr=',arr);
console.log('removed=',removed);   // removed.constructor.name == Array

在这里插入图片描述

example3

删除元素的例子,如果没有在第三个参数上有任何元素,则表示删除元素了。

start 开始位置 ,deleteCount 删除个数,如果删除的个数大于数组本身长度,则全部删除了。

var arr = ['Liu laoda', 'Li laoer', 'Wei laosan', 'Frank','Guan Laowu','Yang Laoliu','Li xiaoqi'];
console.log('before arr=', arr);
// 从数组 下标为2的位置, 删除3个元素
var removed = arr.splice(2, 3);  // ['Wei laosan', 'Frank', 'Guan Laowu']
console.log('arr=', arr); //['Liu laoda', 'Li laoer', 'Yang Laoliu', 'Li xiaoqi']
console.log('removed=', removed);// ['Wei laosan', 'Frank', 'Guan Laowu']

注意这里删除元素 直接对原来的数组修改, 返回值 就是删除的元素的数组。

同时数组的length 属性,维护成正确的值。

在这里插入图片描述

example4

如果删除的元素个数,超过了后面到数组的最大长度,则后面的元素全部被删除了。

比如 从下标2 后面有 5个元素, 此时 deleteCount = 10 ,那么 后面的元素下标>=2 ,全部删除掉

			var arr = ['Liu laoda', 'Li laoer', 'Wei laosan', 'Frank','Guan Laowu','Yang Laoliu','Li xiaoqi'];
			
			console.log('before arr=', arr);
			// 从数组 下标为2的位置, 删除10个元素
			var removed = arr.splice(2, 10);  // ['Wei laosan', 'Frank', 'Guan Laowu']
			console.log('arr=', arr); // ['Liu laoda', 'Li laoer']
			console.log('removed=', removed);// ['Wei laosan', 'Frank', 'Guan Laowu', 'Yang Laoliu', 'Li xiaoqi']

添加元素

example1

在idx=2 的位置 添加 ‘Frank’ 元素,

此时 只要把 deleteCount = 0,表示 删除0个元素 ,表示在此位置上添加元素。

var arr = ['Liu laoda','Li laoer','Wei laosan',];
console.log('before arr=',arr);
// 在 idex=2 的位置 添加 'Frank' 元素
var removed = arr.splice(2, 0,'Frank');
console.log('arr=',arr);
console.log('removed=',removed);

在这里插入图片描述

example2

在数组的头部添加元素, Frank

var arr = ['Liu laoda','Li laoer','Wei laosan',];
console.log('before arr=',arr);
// 在 idex=0 的位置 添加 'Frank' 元素
var removed = arr.splice(0, 0,'Frank');
console.log('arr=',arr);
console.log('removed=',removed);  // []

在数组尾部添加元素, Frank

var arr = ['Liu laoda','Li laoer','Wei laosan'];
console.log('before arr=',arr);
// 在数组 尾部 添加 Frank
var removed = arr.splice(arr.length, 0,'Frank');
console.log('arr=',arr);  
console.log('removed=',removed);  // []

负数索引支持

删除后面两个元素

// 负数索引
var arr = ['Liu laoda', 'Li laoer', 'Wei laosan', 'Frank','Guan Laowu'];
console.log('before arr=', arr);
// 删除后两个元素
var removed = arr.splice(-2);  
console.log('arr=', arr); // ['Liu laoda', 'Li laoer', 'Wei laosan']
console.log('removed=', removed); // ['Frank', 'Guan Laowu']

删除数组最后一个元素

var arr = ['Liu laoda', 'Li laoer', 'Wei laosan', 'Frank','Guan Laowu'];
console.log('before arr=', arr);
// 删除后1个元素
var removed = arr.splice(-1);  
console.log('arr=', arr);  // ['Liu laoda', 'Li laoer', 'Wei laosan', 'Frank']
console.log('removed=', removed);  // ['Guan Laowu']

总结一下

array.splice(start[, deleteCount[, item1[, item2[, ...]]]]) 这个函数 可以实现 对数组的增加,删除 ,替换。

start 就是开始的下标位置,必选参数.

deleteCount 删除多少个元素 , 如果没有指定那么 一直会删除到数组的最后位置。

最后 一个参数,表示 删除后要填充其他的元素,如果要就写入填入的元素即可。如果不需要,就是单纯的删除元素。

参考链接

MDN array splice


分享快乐,留住感动. ‘2022-04-05 19:35:10’ –frank

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189685.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux查看端口号命令

    linux查看端口号命令这本阿里 P8 撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode 刷题手册 开放下载了 第一种 lsof i 端口号第二种 netstat nltp grep 端口号 a 显示本机所有连接和监听地端口 n 网络 IP 地址的形式 显示当前建立的有效连接和端口 r 显示路由表信息 s 显示按协议的统计信息 v 显示当前有效的连接 t 显示所有 TCP 协议连接情况 u 显示所有 UDP 协议连接情况 i 显示自

    2025年8月11日
    3
  • 4.4.2分类模型评判指标(一) – 混淆矩阵(Confusion Matrix)

    4.4.2分类模型评判指标(一) – 混淆矩阵(Confusion Matrix)简介混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法。一句话解释版本:混淆矩阵就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个表里展示出来。这个表就是混淆矩阵。数据分析与挖掘体系位置混淆矩阵是评判模型结果的指标,属于模型评估的一部分。此外,混淆矩阵多用于判断分类器(Classifier)的优劣,适用于…

    2022年5月14日
    54
  • 测试用例的设计方法:等价类划分法[通俗易懂]

    测试用例的设计方法:等价类划分法[通俗易懂]欢迎大家关注我的个人公众号:小朱谈软件测试,全是干货哦。测试用例的设计方法对测试人员来说,非常重要,在工作中,确实会用到。测试用例设计的越全面,线上问题肯定越少,合理地运用这些设计方法,可以减少冗余用例,提高测试效率和覆盖率。常见测试用例的设计方法有八种,下图中标红的是需要掌握的。优先级从等价类划分法,边界值分析法方向排序。每种设计方法,我都会分析,今天我们先一起看看什么是等价类划分法。等价类划分法:官方定义:将程序所有可能的输入数据…

    2022年10月18日
    3
  • 过程控制系统与仪表pdf_计算机控制技术课程设计之炉温

    过程控制系统与仪表pdf_计算机控制技术课程设计之炉温目录一课程设计内容任务,,,,,,,,,,,,,,,,,,,,,,3二对课设任务的解读,,,,,,,,,,,,,,,,,,,,,,3三系统结构模型框图,,,,,,,,,,,,,,,,,,,,,,3四各部分程序流程图,,,,,,,,,,,,,,,,,,,,,,4五数字控制器设计,,,,,,,,,,,,,,,,,,,,,,5六系统仿真,,,,,,,,,,,,,,,,,,,…

    2022年9月29日
    2
  • 如何提高memcache的缓存命中率

    如何提高memcache的缓存命中率

    2022年2月13日
    55
  • 智能安防及视频监控系统

    智能安防及视频监控系统目录一、智能安防系统1、智能安防系统介绍2、安防系统相关工程二、视频监控系统1、视频监控系统分类2、视频监控系统组成3、视频监控系统的作用4、硬盘录像机NVR的基本功能5、硬盘录像机NVR设备结构6、视频监控设备主要厂商一、智能安防系统1、智能安防系统介绍安全防范系统成为了智慧城市与物联网行业应用中的一个非常重要的子系统。安防系统主要包括:视频监控系统、入侵报警系统、出入口控制系统、电子巡查系统以及智能停车场管理系统等5个子系统。AI人工智

    2022年7月15日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号