JS常用数据类型的方法函数调用,数组的方法、对象的方法、字符串的方法、数字的方法、集合的方法、映射的方法、栈的方法、队列的方法、链表的封装、树的封装、

embedded/2024/9/20 7:10:35/ 标签: javascript, 链表, 前端

JS常用数据类型的方法函数调用,数组的方法、对象的方法、字符串的方法、数字的方法、集合的方法、映射的方法、栈的方法、队列的方法、链表的封装、树的封装

  • 1. 数组(Array):数组是一组按顺序存储的元素的集合:
  • 2. 对象(Object):对象是一种键值对的集合,其中每个键都是唯一的
  • 3. 字符串(String):
  • 4. 数字(Number):
  • 5. 集合(Set):集合是一组唯一值的集合:
  • 6. 映射(Map):映射是一组键值对的集合,其中每个键都是唯一的:
  • 7. 栈(Stack):栈是一种遵循先进后出(LIFO)原则的数据结构:
  • 8. 队列(Queue):队列是一种遵循先进先出(FIFO)原则的数据结构:
  • 9. 链表(Linked List):链表是一种由节点组成的线性数据结构:
  • 10. 树(Tree):树是一种由节点组成的层次结构:

1. 数组(Array):数组是一组按顺序存储的元素的集合:

javascript">concat(): 连接两个或多个数组,并返回一个新数组
let arr1 = [1,2,3];
arr1 = arr1.concat([1,2,3],[4,5,6])
console.log(arr1);
join(): 将数组的所有元素连接成一个字符串。
let str1 = arr1.join("");
console.log(str1);
push(): 向数组的末尾添加一个或多个元素,并返回新的长度。
arr1.push(1)
pop(): 删除并返回数组的最后一个元素
let last = arr1.pop()
shift(): 删除并返回数组的第一个元素
let first = arr1.shift()
unshift(): 向数组的开头添加一个或多个元素,并返回新的长度。
arr1.unshift(0)
slice(): 从数组中提取指定位置的元素,并返回新数组
let afterSlice = arr1.slice(2,4)
splice(): 删除、替换或添加数组的元素,并返回被删除的元素。
arr1.splice(1,4)
console.log(arr1)
reverse(): 颠倒数组中元素的顺序。
arr1.reverse()
console.log(arr1)
sort(): 对数组元素进行排序。
arr1.sort((a,b)=>a-b)
console.log(arr1)
indexOf(): 返回指定元素在数组中首次出现的索引。
let firstFindIndex = arr1.indexOf(1)
lastIndexOf(): 返回指定元素在数组中最后一次出现的索引。
let lastFindIndex = arr1.lastIndexOf(1)
filter(): 创建一个新数组,其中包含通过函数筛选的所有元素。
let afterFilter = arr1.filter((item)=>item==2)
map(): 创建一个新数组,其中包含对原数组的每个元素应用函数的结果。
let afterMap = arr1.map((item,index)=>{return item*2})
reduce(): 通过函数对数组的元素进行累积计算,返回一个值,累加器初始化为0
let afterReduce = arr1.reduce((accumulator,currentVal)=>{return acuumulator+currentVal},0)
forEach(): 对数组的每个元素执行一次指定的函数。
arr1.forEach((item)=>{item+=1;})
every(): 检查数组的所有元素是否满足指定的条件。
let res = arr1.every((item,index)=>{return item>0;})
some(): 检查数组的是否至少有一个元素满足指定的条件。
let res = arr1.some((item)=>{
return item<0;})
find(): 返回数组中满足指定条件的第一个元素。
let res = arr1.find((item)=>{
return item>2;})
findIndex(): 返回数组中满足指定条件的第一个元素的索引。
let res = arr1.findIndex((item)=>{return item>2;})
这些方法会直接修改原始数组,并返回具体的操作结果或修改后的数组。
会改变原数组的方法:
push()
pop()
shift()
unshift()
splice()
reverse()
sort()
会返回新数组的方法,这些方法不会修改原始数组,而是返回一个新的数组作为结果。原始数组保持不变:
concat()
slice()
filter()
map()
其他方法:
join()
indexOf()
lastIndexOf()
reduce()
forEach()
every()
some()
find()
findIndex()

2. 对象(Object):对象是一种键值对的集合,其中每个键都是唯一的

javascript">Object.keys(obj): 返回一个包含对象自身可枚举属性的数组。
Object.values(obj): 返回一个包含对象自身可枚举属性的值的数组。
Object.entries(obj): 返回一个包含对象自身可枚举属性的键值对的数组。
Object.assign(target, ...sources): 将一个或多个源对象的属性复制到目标对象中,并返回目标对象。
Object.create(proto, [propertiesObject]): 使用指定的原型对象和属性创建一个新对象。
Object.defineProperty(obj, prop, descriptor): 在对象上定义一个新属性或修改现有属性的特性。
Object.getOwnPropertyDescriptor(obj, prop): 返回指定对象上一个自有属性对应的属性描述符。
Object.getOwnPropertyNames(obj): 返回一个包含对象自身所有属性(不仅是可枚举属性)的数组。
Object.getPrototypeOf(obj): 返回指定对象的原型。
Object.setPrototypeOf(obj, prototype): 设置一个对象的原型到另一个对象或null。
Object.hasOwnProperty(prop): 判断对象是否具有指定名称的自身属性。

3. 字符串(String):

javascript">length: 返回字符串的长度。
charAt(index): 返回指定索引位置的字符。
charCodeAt(index): 返回指定索引位置的字符的Unicode编码。
concat(str1, str2, ..., strN): 连接两个或多个字符串,并返回一个新字符串。
indexOf(searchValue, [start]): 返回指定字符串首次出现的索引。
lastIndexOf(searchValue, [start]): 返回指定字符串最后一次出现的索引。
slice(start, [end]): 提取字符串的一部分,并返回一个新字符串。
substring(start, [end]): 提取字符串的一部分,并返回一个新字符串。与slice()类似,但不支持负索引。
substr(start, [length]): 提取字符串的指定长度的子字符串,并返回一个新字符串。
replace(searchValue, replaceValue): 替换字符串中的指定内容,并返回一个新字符串。
toLowerCase(): 将字符串转换为小写。
toUpperCase(): 将字符串转换为大写。
trim(): 移除字符串两端的空格或其他指定字符。
split(separator, [limit]): 将字符串分割为子字符串数组,根据指定的分隔符。
startsWith(searchString, [position]): 检查字符串是否以指定字符串开头。
endsWith(searchString, [length]): 检查字符串是否以指定字符串结尾。
includes(searchString, [position]): 检查字符串是否包含指定字符串。
match(regexp): 在字符串中搜索匹配指定正则表达式的结果,并返回一个数组。
search(regexp): 在字符串中搜索匹配指定正则表达式的结果,并返回匹配的索引。
substring(start, [end]): 提取字符串的一部分,并返回一个新字符串。与slice()类似,但不支持负索引。

4. 数字(Number):

javascript">toFixed(digits): 将数字格式化为指定小数位数的字符串表示。
toPrecision(precision): 将数字格式化为指定有效位数的字符串表示。
toString([radix]): 将数字转换为指定进制(236)的字符串表示。
parseFloat(string): 解析一个字符串参数并返回一个浮点数。
parseInt(string, radix): 解析一个字符串参数并返回一个整数。
isFinite(number): 检查一个数字是否有限(非InfinityNaN)。
isNaN(number): 检查一个数字是否是NaN(Not-a-Number)。
isInteger(number): 检查一个数字是否是整数。
isSafeInteger(number): 检查一个数字是否是安全整数。
toExponential(fractionDigits): 返回一个数字的指数表示法的字符串。
toLocaleString([locales, [options]]): 返回一个数字的本地化表示字符串。
valueOf(): 返回一个数字的原始值。

5. 集合(Set):集合是一组唯一值的集合:

javascript">const mySet = new Set();
add(value): 向集合中添加一个新的元素。
delete(value): 从集合中删除指定的元素。
has(value): 检查集合中是否存在指定的元素,返回一个布尔值。
clear(): 清空集合,删除所有元素。
size: 返回集合中元素的数量。
values(): 返回一个包含集合中所有元素的迭代器。
forEach(callbackFn, [thisArg]): 对集合中的每个元素执行指定的回调函数。

6. 映射(Map):映射是一组键值对的集合,其中每个键都是唯一的:

javascript">const myMap = new Map();
myMap.set("name", "John");
myMap.set("age", 25);
console.log(myMap.toArray()); // 输出: [['name', 'John']]
若不是new Map的映射,不能使用.has等
用for(let item of map){if(item in map){}}set(key, value): 向Map中添加一个新的键值对。
get(key): 获取指定键对应的值。
has(key): 检查Map中是否存在指定的键,返回一个布尔值。
delete(key): 从Map中删除指定键及其对应的值。
clear(): 清空Map,删除所有键值对。
size: 返回Map中键值对的数量。
keys(): 返回一个包含Map中所有键的迭代器。
values(): 返回一个包含Map中所有值的迭代器。
entries(): 返回一个包含Map中所有键值对的迭代器。
forEach(callbackFn, [thisArg]): 对Map中的每个键值对执行指定的回调函数。

7. 栈(Stack):栈是一种遵循先进后出(LIFO)原则的数据结构:

javascript">const myStack = new Stack();
push(element1, element2, ..., elementN): 将一个或多个元素添加到栈的顶部。
pop(): 移除并返回栈顶部的元素。
peek(): 返回栈顶部的元素,但不对栈进行修改。
isEmpty(): 检查栈是否为空,返回一个布尔值。
clear(): 清空栈,移除所有元素。
size(): 返回栈中元素的数量。

8. 队列(Queue):队列是一种遵循先进先出(FIFO)原则的数据结构:

javascript">const myQueue = new Queue();
enqueue(element1, element2, ..., elementN): 将一个或多个元素添加到队列的末尾(也称为入队)。
dequeue(): 移除并返回队列的第一个元素(也称为出队)。
peek(): 返回队列的第一个元素,但不对队列进行修改。
isEmpty(): 检查队列是否为空,返回一个布尔值。
clear(): 清空队列,移除所有元素。
size(): 返回队列中元素的数量。

9. 链表(Linked List):链表是一种由节点组成的线性数据结构:

javascript">class Node {constructor(value) {this.value = value;this.next = null;}
}
class LinkedList {constructor() {this.head = null;this.tail = null;}// 在链表末尾添加新节点append(value) {const newNode = new Node(value);if (!this.head) {this.head = newNode;this.tail = newNode;} else {this.tail.next = newNode;this.tail = newNode;}}// 在链表头部添加新节点appendhead(value) {const newNode = new Node(value);if (!this.head) {this.head = newNode;this.tail = newNode;} else {newNode.next = this.head;this.head = newNode;}}forEach() {let currentNode = this.head;while (currentNode) {console.log(currentNode.value);currentNode = currentNode.next;}}
}
const mylink = new LinkedList()
mylink.append(1)
mylink.prepend(2)
mylink.append(3)
mylink.forEach()

10. 树(Tree):树是一种由节点组成的层次结构:

javascript">class TreeNode {constructor(value) {this.value = value;this.left = null;this.right = null;}
}
class BinaryTree {constructor() {this.root = null;}insert(value) {const newNode = new TreeNode(value);if (this.root === null) {this.root = newNode;} else {this.insertNode(this.root, newNode);}}insertNode(node, newNode) {if (newNode.value < node.value) {if (node.left === null) {node.left = newNode;} else {this.insertNode(node.left, newNode);}} else {if (node.right === null) {node.right = newNode;} else {this.insertNode(node.right, newNode);}}}
}

http://www.ppmy.cn/embedded/22449.html

相关文章

GPT的全面历史和演变:从GPT-1到GPT-4

人工智能新篇章&#xff1a;GPT-4与人类互动的未来&#xff01; 本文探讨了生成式预训练 Transformer (GPT) 的显着演变&#xff0c;提供了从开创性的 GPT-1 到复杂的 GPT-4 的旅程。 每次迭代都标志着重大的技术飞跃&#xff0c;深刻影响人工智能领域以及我们与技术的互动。 我…

feign整合sentinel做降级知识点

1&#xff0c;配置依赖 <!-- Feign远程调用依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency> <!--sentinel--><dependency>…

微软开源了 MS-DOS 4.00

DOS的历史源远流长&#xff0c;很多现在的年轻人不知道DOS了。其实早期的windows可以看做是基于DOS的窗口界面的模拟器&#xff0c;系统的本质其实是DOS。后来DOS的漏洞还是太多了&#xff0c;微软重新写了windows的底层内核。DOS只是一个辅助终端的形式予以保留了。 微软是在…

golang上传文件到ftp服务器

之前有个业务需要把文件上传到ftp服务器&#xff0c;写了一个上传ftp的功能 package ftpimport "context"type Client interface {// UploadFile 上传文件UploadFile(ctx context.Context, opt *UploadFileOpt) error }type UploadFileOpt struct {Data […

操作系统——优先权算法c++实现

变量描述 测试数据 5 A 0 4 4 B 1 3 2 C 2 5 3 D 3 2 5 E 4 4 1 先来先服务算法 简述 该算法实现非常简单就是对到达时间排个序&#xff0c;然后依次进行即可&#xff0c;对结构体的sort进行了重载 代码 void FCFS() {//先来先服务算法std::cout<<"\n\t\t\t\t\…

灌溉排涝乙级资质升级甲级,这些材料你准备好了吗?

在灌溉排涝行业&#xff0c;资质的升级不仅是企业实力的一种体现&#xff0c;更是开拓新市场、参与更多大型项目的必要条件。从乙级资质升级到甲级&#xff0c;企业需要跨越一个较高的门槛&#xff0c;准备一系列详尽而严谨的材料。以下就是你需要准备的关键材料清单&#xff0…

Cocos Creator 3D物理引擎的物理参数控制详解

前言 Cocos Creator是一款基于JavaScript和TypeScript的开源游戏引擎&#xff0c;它提供了强大的3D物理引擎&#xff0c;可以帮助开发者实现各种物理效果。在Cocos Creator中&#xff0c;我们可以通过控制物理参数来实现不同的物理效果&#xff0c;比如重力、碰撞检测、摩擦力…

后端学习记录~~JavaSE篇(Module08-异常 上 )

总览&#xff1a; Java概述&#xff1a; 思维导图文件在本人个人主页上-----资源模块 资源详情&#xff08;免费下载&#xff09;&#xff1a;Java学习思维导图异常篇资源-CSDN文库https://download.csdn.net/download/m0_61589682/89238330 整体展示&#xff1a;

动手学深度学习——矩阵

1. 基本概念 1.1 标量 标量由只有一个元素的张量表示。 所以标量计算与程度开发中的普通变量计算没有差异。 import torchx torch.tensor(3.0) y torch.tensor(2.0)x y, x * y, x / y, x**y(tensor(5.), tensor(6.), tensor(1.5000), tensor(9.))1.2 向量 向量泛化自标量…

水稻病害检测(YOLO数据集,多分类,稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫)

是自己利用LabelImg工具进行手工标注&#xff0c;数据集制作不易&#xff0c;请尊重版权&#xff08;稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫&#xff09; 如果需要yolv8检测模型和数据集放在一起的压缩包&#xff0c;可以关注&#xff1a;最新最…

什么是跨域? 出现原因及解决方法

什么是跨域? 出现原因及解决方法 什么是跨域 跨域&#xff1a;浏览器对于javascript的同源策略的限制 。 同源政策的目的&#xff0c;是为了保证用户信息的安全&#xff0c;防止恶意的网站窃取数据。 设想这样一种情况&#xff1a;A 网站是一家银行&#xff0c;用户登录以后…

迭代器iterator是C++中用于遍历容器中元素的对象

C中的迭代器是一种对象&#xff0c;用于在容器中遍历元素。它提供了一种抽象的方式来访问容器中的元素&#xff0c;而不暴露底层数据结构的细节。通过迭代器&#xff0c;可以遍历顺序容器&#xff08;如vector、list、deque等&#xff09;、关联容器&#xff08;如map、set等&a…

【调研分析】目标在不同焦距和距离下与画面的比例(2.8-3.6-4.0)

之前在做项目中需要极度优化效果和代码运行速度 为此测试了同一个目标在不同焦距和距离下与画面的比例&#xff0c;从而可以方便在指定大小情况下搜索目标 NOTE: 这是早期滑窗检测做目标检测下的工作

java项目:微信小程序基于SSM框架小说阅读器小程序【源码+数据库+毕业论文+PPT】

一、项目简介 本项目是一套基于SSM框架小说阅读器小程序 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能齐全、…

python代码实现支持向量机对鸢尾花分类

1、导入支持向量机模型&#xff0c;划分数据集 from sklearn import datasets from sklearn import svmirisdatasets.load_iris() iris_xiris.data iris_yiris.target indices np.random.permutation(len(iris_x)) iris_x_train iris_x[indices[:-10]] iris_y_train iris_y…

计算机网络之传输层TCP\UDP协议

UDP协议 用户数据报协议UDP概述 UDP只在IP数据报服务之上增加了很少功能&#xff0c;即复用分用和差错检测功能 UDP的主要特点&#xff1a; UDP是无连接的&#xff0c;减少开销和发送数据之前的时延 UDP使用最大努力交付&#xff0c;即不保证可靠交付&#xff0c;可靠性由U…

linux权限的概念

目录 shell命令以及运行原理 Linux权限的概念 Linux权限管理 文件类型和访问权限&#xff08;事物属性&#xff09; 快速修改权限的做法&#xff1a; 一个文件的权限谁能修改&#xff1f; 对比权限的有无&#xff0c;表现&#xff1a; 修改权限的第二套方法&#xff1…

「布道师系列文章」小红书黄章衡:AutoMQ Serverless 基石-秒级分区迁移

作者&#xff5c;黄章衡&#xff0c;小红书消息引擎研发专家 01 引言 Apache Kafka 因存算一体化架构&#xff0c;分区迁移依赖大量数据同步的完成&#xff0c;以一个 100MB/s 流量的 Kafka 分区为例&#xff0c;运行一天产生的数据量约为 8.2T&#xff0c;如果此时需要将该分…

访问控制列表配置实验

ACL&#xff0c;全称 Access Control List&#xff08;访问控制列表&#xff09;&#xff0c;是一种实现访问控制的机制&#xff0c;用于规定哪些主体&#xff08;如用户、设备、IP地址、进程等&#xff09;可以对哪些资源&#xff08;如网络服务、文件、系统对象等&#xff09…

xml,json和protobuffer

数据组织格式 xmljsonprotobuffer小结 xml 是以成对的方式,来表示"键值对"的信息,同时标签支持嵌套,可以构成更复杂的树形结构数据. 请求: <request> // 开始标签<username>zhangsan</username> // 表示的是键值对 key:username value: zhangsan&l…