ts:数组的常用方法(push、pop、shift、unshift、splice、slice)
前端css中filter的使用
- 一、主要内容说明
- 二、例子
- (一)、push方法(尾添加)
- 1.源码1 (push方法)
- 2.源码1运行效果
- (二)、pop方法(尾删除)
- 1.源码2(pop方法)
- 2.源码2运行效果
- (三)、shift方法(开头删除)
- 1.源码3(shift方法)
- 2.源码3运行效果
- (四)、unshift方法(开头添加)
- 1.源码4(unshift方法)
- 2.源码4运行效果
- (五)、splice方法(增、删、替)
- 1.源码5(splice方法)
- 2.源码5运行效果
- (六)、slice方法(提取)
- 1.源码6(slice方法)
- 2.源码6运行效果
- 三、结语
- 四、定位日期
一、主要内容说明
本文中,push、pop、shift、unshift、splic方法是对原有数组进行方法转变,使用方法后原数组结构会发生改变。而slice方法只是提取原数组的元素组成新数组,原数组未发生改变。数组的方法主要是数组对象自己使用,其他非数组对象无法使用的。
我们下文举例,每个源码都有数字数组、字符串数组、对象数组,各个使用不同的数组方法,分开看各个源码就可以看各个数组方法的使用。本文只是列举了push、pop、shift、unshift、splice、llice方法,数组方法还有其他的,如forEach、map等方法,笔者会另起博文。
二、例子
(一)、push方法(尾添加)
ts中数组的push方法,是在尾部添加1,或多个元素。
1.源码1 (push方法)
let num_1: number[] = [764, 765, 766];
let str_2: string[] = ["小蜗牛", "764号"];// 向数组中添加元素
num_1.push(767,768);
str_2.push("这个是真的");// 输出修改后的数组
console.log(num_1); // 输出: [764, 765, 766, 767]
console.log(str_2); // 输出: ["小蜗牛", "764号", "这个是真的"]// 定义消息接口
interface Message {name: string;age: number;height: number;
}// 创建消息数组
let mes: Message[] = [{ name: "小七", age: 14, height: 170 },{ name: "小巴", age: 24, height: 160 }
];
console.log("\n 原数组:");
console.log(mes); // 输出: 消息数组
mes.push({ name: "小七", age: 14, height: 170 }); // 添加新的消息对象
console.log(mes); // 输出: 更新后的消息数组
2.源码1运行效果

(二)、pop方法(尾删除)
ts中数组的pop方法,是删除数组尾部的一个元素。pop方法和push方法用法相反,但需要注意的是,pop只支持删除一个元素,若想删除多个元素可以使用splice方法,这个可以查看后面的内容。
- pop()的括号里不填值,因为它只删除尾部一个元素,不接收任何参数。
1.源码2(pop方法)
// 定义数组
let num_1 = [764, 765, 766];
let str_2 = ["小蜗牛", "764号"];// 使用 pop 方法删除数组最后一个元素
num_1.pop(); // 删除最后一个元素
str_2.pop(); // 删除最后一个元素// 输出修改后的数组
console.log(num_1); // 输出: [764, 765]
console.log(str_2); // 输出: ["小蜗牛"]// 定义消息接口
let mes = [{ name: "小七", age: 14, height: 170 },{ name: "小巴", age: 24, height: 160 }
];
console.log("\n 原数组:");
console.log(mes); // 输出: 消息数组
mes.pop(); // 删除最后一个消息对象
console.log(mes); // 输出: 更新后的消息数组
2.源码2运行效果

(三)、shift方法(开头删除)
ts中数组的shift方法,是删除数组头部的一个元素。shift方法和后面的unshift方法用法相反,也需要注意的是,shift方法也只支持删除一个元素,若想删除多个元素可以使用splice方法,splice方法后面的会讲。
- shift()的括号里不填值,因为它只删除头部一个元素,不接收任何参数。
1.源码3(shift方法)
// 定义数组
let num_1 = [764, 765, 766];
let str_2 = ["小蜗牛", "764号"];console.log("原数组为----" + num_1);
console.log("原数组为----" + str_2);
console.log("使用 shift 数组方法后,从开头删除一个元素-------");num_1.shift(); // 从开头删除一个元素
str_2.shift(); // 从开头删除一个元素// 输出修改后的数组
console.log(num_1); // 输出: [765, 766]
console.log(str_2); // 输出: ["764号"]// 定义消息接口
let mes = [{ name: "小七", age: 14, height: 170 },{ name: "小巴", age: 24, height: 160 }
];
console.log("\n原对象数组为:");
console.log(mes);console.log("使用 shift 数组方法后,从开头删除一个元素-------");
mes.shift(); // 删除第一个消息对象
console.log(mes); // 输出: 更新后的消息数组
2.源码3运行效果

(四)、unshift方法(开头添加)
ts中数组的unshift方法,是在数组头部添加一个,或多个元素。unshift方法和前面面的push方法类似,区别只是添加元素的位置不同,如unshift头部添加,push尾部添加。
1.源码4(unshift方法)
// 再次定义数组
let num_1 = [764, 765, 766];
let str_2 = ["小蜗牛", "764号"];console.log("原数组为----" + num_1);
console.log("原数组为----" + str_2);
console.log("使用 unshift 数组方法后,从开头增加一个元素-------");num_1.unshift(763); // 从开头添加元素
str_2.unshift("我是"); // 从开头添加元素// 输出修改后的数组
console.log(num_1); // 输出: [763, 764, 765, 766]
console.log(str_2); // 输出: ["我是", "小蜗牛", "764号"]// 定义消息接口
let mes = [{ name: "小七", age: 14, height: 170 },{ name: "小巴", age: 24, height: 160 }
];
console.log("\n原对象数组为:");
console.log(mes);console.log("使用 unshift 数组方法后,从开头增加两个元素-------");
mes.unshift({ name: "月儿", age: 22, height: 163 },{ name: "春雅", age: 21, height: 166 }
); // 从开头添加两个消息对象
console.log(mes); // 输出: 更新后的消息数组
2.源码4运行效果

(五)、splice方法(增、删、替)
ts的数组方法的splice方法,可以添加、删除、替换元素。splice方法可接收3个参数,如下
let arr;
arr.splice(A,B,C);A----要删除的位置B----删除几个C----删除的部分替换为
当A为0时表示从第一个开始删,当A为1时从第二个开始删。B为2就表示删2个,为1就删1个。C部分编写为与数组相同属性的元素即可,可以有多个元素。
1.源码5(splice方法)
// 定义数组
let num_1 = [764, 765, 766];
let str_2 = ["小蜗牛", "764号"];console.log("原数组为----" + num_1);
console.log("原数组为----" + str_2);
console.log("使用 splice 数组方法后,num_1 从第二个开始删,删 1 个,替换为 777,str_2 从第一个开始删,删 1 个,替换为“我是”-------");num_1.splice(1, 1, 777); // 从索引 1 删除 1 个元素,替换为 777
str_2.splice(0, 1, "我是"); // 从索引 0 删除 1 个元素,替换为“我是”// 输出修改后的数组
console.log(num_1); // 输出: [764, 777, 766]
console.log(str_2); // 输出: ["我是", "764号"]// 定义消息接口
let mes = [{ name: "小七", age: 14, height: 170 },{ name: "小巴", age: 24, height: 160 },{ name: "月儿", age: 22, height: 163 },{ name: "删除使用", age: 0, height: 0 },
];
console.log("\n原对象数组为:");
console.log(mes);console.log("使用 splice 数组方法后,从第 4 个开始删,删 1 个,替换为“{name:春雅,age:21,height:166} 等”-------");
mes.splice(3, 2, { name: "春雅", age: 21, height: 166 },{ name: "夏婉", age: 22, height: 163 }); // 从索引 3 删除 1 个元素,替换为新对象
console.log(mes); // 输出: 更新后的消息数组
2.源码5运行效果

(六)、slice方法(提取)
ts中数组slice方法,用于提取数组中的元素,组成新的数组,原来的数组结构不会发生改变。slice方法可以接收2个参数,如下:
let arr;
arr.slice(A,B);A----元素提取的开始位置B----元素提取的结束位置,不包含。
A表示元素提取的起始位置,当A=0表示第一个开始提取,A=3表示从第4个开始提取,-2则表示倒数第2个开始。B为提取的结束位置,但不包含B位置,如当B为7时,7表示第八个位置,但只提取到第七个位置,不包含7的第八位置。slice()的括号里也可以填单值,表示起始的提取位置,提取到末尾。也可以不填值,表示全部提取数组元素。
- 编程语言里,从0开始算一。
- 提取元素产生新数组,原数组结构不改变。
1.源码6(slice方法)
// 定义数组
let num_1 = [764, 765, 766];
let str_2 = ["小蜗牛", "764号"];console.log("原数组为----" + num_1);
console.log("原数组为----" + str_2);
console.log("使用 slice 数组方法后,从原数组中提取元素作为新数组,num_1 从第 2 个提取到第 3 个(不含),str_2 从第 1 个提取到尾,-------");let num_2 = num_1.slice(1, 2); // 从索引 1 提取到 2(不含)
let str_3 = str_2.slice(0); // 从索引 0 提取到数组末尾console.log(num_2); // 输出: [765]
console.log(str_3); // 输出: ["小蜗牛", "764号"]
console.log("原数组对比是否变化----" + num_1); // 输出: 原数组未变化
console.log("原数组对比是否变化----" + str_2); // 输出: 原数组未变化// 定义消息接口
let mes = [{ name: "小七", age: 14, height: 170 },{ name: "小巴", age: 24, height: 160 },{ name: "月儿", age: 22, height: 163 },{ name: "春雅", age: 21, height: 166 }
];
console.log("\n原对象数组为:");
console.log(mes);console.log("使用 slice 数组方法后,从第 3 个开始提取元素到末尾,生成新数组-------");
let mes_2 = mes.slice(-2); // 从索引 -2 提取到末尾,倒数2个
console.log(mes_2); // 输出: 提取后的新数组console.log("原始值如下,用以对比是否变化-------");
console.log(mes); // 输出: 原数组未变化
2.源码6运行效果

三、结语
本文只讲了push、pop、shift、unshift、splice、slice的方法,它们是数组的方法,只适用于数组。除这些还有其他数组方法,由于时间问题,便分开编写了。当然一下子大量内容也不好观看,分成几个小模块,小模块分开编写学习,效率也高一些。
由于笔者的能力有限,创作的内容有所不足在所难免,也敬请读者包涵和指出,万分感谢!
四、定位日期
添加文章架构,添加源码1-6,源码已调试完毕,还未添加文字说明。明天继续。
2024-10-26;
23:36;
2024-10-27;
10:09;
相关文章:
ts:数组的常用方法(push、pop、shift、unshift、splice、slice)
前端css中filter的使用 一、主要内容说明二、例子(一)、push方法(尾添加)1.源码1 (push方法)2.源码1运行效果 (二)、pop方法(尾删除)1.源码2(pop方…...
物联网网关确保设备安全
物联网(IoT)网关在确保设备安全方面扮演着至关重要的角色。 作为连接物联网设备和云端或企业系统的中介,物联网网关可以实施多种安全措施来保护设备和数据。 是物联网网关确保设备安全的关键方法: 1. 设备认证和授权 认证&…...
Vue学习笔记(五)
Class绑定 数据绑定的一个常见需求场景式操纵元素的CSS class列表,因为class是attribute,我们可以和其他attribute一样使用v-bind将它们和动态的字符串绑定。但是,在处理比较复杂的绑定时,通过拼接生成字符串是麻烦且易出错的。因此…...
Nestjs返回格式小结
在 NestJS 中,除了 text/event-stream(用于 Server-Sent Events)之外,还有多种格式的返回方式,具体取决于你的应用需求。以下是一些常见的返回格式及其示例: 1. JSON 格式 Get(json) getJsonResponse(Res…...
【力扣刷题实战】相同的树
大家好,我是小卡皮巴拉 文章目录 目录 力扣题目: 相同的树 题目描述 示例 1: 示例 2: 示例 3: 解题思路 题目理解 算法选择 具体思路 解题要点 完整代码(C语言) 兄弟们共勉 &#…...
Golang | Leetcode Golang题解之第515题在每个树行中找最大值
题目: 题解: func largestValues(root *TreeNode) (ans []int) {if root nil {return}q : []*TreeNode{root}for len(q) > 0 {maxVal : math.MinInt32tmp : qq nilfor _, node : range tmp {maxVal max(maxVal, node.Val)if node.Left ! nil {q …...
Zookeeper 对于 Kafka 的作用是什么?
大家好,我是锋哥。今天分享关于【Zookeeper 对于 Kafka 的作用是什么?】面试题?希望对大家有帮助; Zookeeper 对于 Kafka 的作用是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ZooKeeper 在 Kafka…...
Thread类及线程的核心操作
一. Thread类的常见构造方法 1. Thread() Thread类无参的构造方法, 用于创建Thread类的实例对象. 2. Thread(String name) 带一个参数的Thread类构造方法, 创建一个线程对象, 并给其命名. [注]: 如果不专门给线程命名, 那么线程默认的名字就是Thread-0, Thread-1, Thread-…...
算法|牛客网华为机试11-20C++
牛客网华为机试 上篇:算法|牛客网华为机试1-10C 文章目录 HJ11 数字颠倒HJ12 字符串反转HJ13 句子逆序HJ14 字符串排序HJ15 求int型正整数在内存中存储时1的个数HJ16 购物单HJ17 坐标移动HJ18 识别有效的IP地址和掩码并进行分类统计HJ19 简单错误记录HJ20 密码验证…...
OpenAI低调发布多智能体工具Swarm:让多个智能体协同工作!
大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…...
性能之光 年度电竞性能旗舰iQOO 13发布
2024年10月30日,被定义为“性能之光”的年度电竞性能旗舰——iQOO 13正式发布,售价3999元起。iQOO 13作为iQOO 品牌在性能上的又一次深入探索,它像是一束光,引领行业不断拉高性能上限,让用户看到更多的可能性。 iQOO …...
如何避免因不熟悉数据保护法规而受损
在当今数字化时代,数据保护法规的遵守对于企业至关重要。不熟悉新的数据保护法规会导致法律风险增加、财务损失、声誉受损、客户信任下降等多方面的负面影响。其中,法律风险增加尤为严重,因为不符合规定可能引发高额罚款和法律诉讼。企业若未…...
LLaMA Factory 核心原理讲解
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…...
Java题集练习5
Java题集练习5(集合) 1.三种集合差别,集合类都是什么,数据结构是什么,都什么时候用 三者关系 Set集合 Set接口是Collection接口的一个子接口是无序的,set中不包含重复的元素,也就是说set中不…...
操作系统学习笔记-2.3哲学家和管程问题
哲学家问题 问题描述 假设有五位哲学家围坐在一张圆桌旁,每位哲学家面前放有一盘意大利面,他们各自间隔放置一根叉子。哲学家的行为分为“思考”和“进餐”两种状态。为了进餐,哲学家需要同时拿起左手边和右手边的两根叉子。用餐结束后&…...
2023年信息安全工程师摸底测试卷
目录 1.密码算法 2.等级保护 3.密码学 4.安全评估 5.网络安全控制技术 6.恶意代码 7.身份认证 8.资产管理 9.密码分类 10.被动攻击 11.商用密码服务编辑 12.超文本传输协议 13.数字水印技术 14.信息系统安全设计 15.重放攻击 16.信息资产保护 17.身份认证 …...
ReactOS系统中平衡二叉树。给定地址超导其所属区块MmFindRegion()
系列文章目录 PMM_REGION NTAPI MmFindRegion( PVOID BaseAddress, PLIST_ENTRY RegionListHead, PVOID Address, PVOID* RegionBaseAddress ); 宏函数 //给定地址找到其中所属区块 #define CONTAINING_RECORD(address,type,field) ((type FAR *\(PCHAR)(address)-(PCHAR)(&…...
基于TESSY的单元测试与分类树方法深入解析
在现代软件开发中,单元测试是确保软件质量和可靠性的关键步骤之一。特别是对于嵌入式软件,由于其应用环境的特殊性和高安全性要求,单元测试显得尤为重要。本文将基于《TESSY 用户手册》的内容,详细介绍如何使用TESSY 进行单元测试,并深入探讨分类树方法(Classification T…...
整理了一些大模型的课程,非常详细,大模型零基础入门到精通,收藏我这一篇就够了
目前有多个科普类的大模型课程,这些课程涵盖了从基础理论到实际应用的各个方面。以下是一些主要的科普类大模型课程:复旦大学“大模型开发与赋能”专题讲习班:由复旦大学计算机学院邱锡鹏教授带来的《大模型科普讲解》课程,通过深…...
区块链国赛题目--食品溯源(模块三)
区块链国赛题目–食品溯源(模块三) 任务 3-1:区块链应用前端功能开发 1.请基于前端系统的开发模板,在登录组件 login.js、组件管理文件components.js 中添加对应的逻辑代码,实现对前端的角色选择功能,并测试功 能完整性,示例页面如下: 具体要求如下: (1)有明…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
