当前位置: 首页 > news >正文

前端数据结构

在前端开发中,常用的数据结构有助于高效地处理和管理数据。以下是一些常见的前端数据结构及其用途:

1. 数组(Array):

  • 用于存储有序的元素集合,可以是任何类型的数据。
  • 常用方法:pushpopshiftunshiftmapfilterreduceforEach 等。
const numbers = [1, 2, 3, 4, 5];
numbers.push(6); // [1, 2, 3, 4, 5, 6]
const doubled = numbers.map(num => num * 2); // [2, 4, 6, 8, 10, 12]

2. 对象(Object):

  • 用于存储键值对,键是字符串或符号,值可以是任何类型的数据。
  • 常用方法:Object.keysObject.valuesObject.entrieshasOwnProperty 等。
const person = { name: 'Alice', age: 25 };
person.email = 'alice@example.com'; // { name: 'Alice', age: 25, email: 'alice@example.com' }
const keys = Object.keys(person); // ['name', 'age', 'email']

3. 集合(Set):

  • 用于存储唯一值的集合,可以是任何类型的数据。
  • 常用方法:adddeletehasclear 等。
const uniqueNumbers = new Set([1, 2, 3, 4, 5, 5, 6]);
uniqueNumbers.add(7); // Set { 1, 2, 3, 4, 5, 6, 7 }
uniqueNumbers.has(3); // true

4. 映射(Map):

  • 用于存储键值对,键和值可以是任何类型的数据。
  • 常用方法:setgethasdeleteclear 等。
const map = new Map();
map.set('name', 'Alice');
map.set('age', 25);
console.log(map.get('name')); // 'Alice'

5. 队列(Queue):

  • 一种先进先出(FIFO)的数据结构。
  • 可以使用数组来实现队列。
class Queue {constructor() {this.items = [];}enqueue(element) {this.items.push(element);}dequeue() {return this.items.shift();}isEmpty() {return this.items.length === 0;}front() {return this.items[0];}
}const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
console.log(queue.dequeue()); // 1

6. 栈(Stack):

  • 一种后进先出(LIFO)的数据结构。
  • 可以使用数组来实现栈。
class Stack {constructor() {this.items = [];}push(element) {this.items.push(element);}pop() {return this.items.pop();}isEmpty() {return this.items.length === 0;}peek() {return this.items[this.items.length - 1];}
}const stack = new Stack();
stack.push(1);
stack.push(2);
console.log(stack.pop()); // 2

7. 链表(Linked List):

  • 一种线性数据结构,其中每个元素包含一个指向下一个元素的引用。
  • 可以实现单向链表和双向链表。
class Node {constructor(value) {this.value = value;this.next = null;}
}class LinkedList {constructor() {this.head = null;}append(value) {const newNode = new Node(value);if (!this.head) {this.head = newNode;} else {let current = this.head;while (current.next) {current = current.next;}current.next = newNode;}}
}const list = new LinkedList();
list.append(1);
list.append(2);

这些数据结构在前端开发中非常常见,选择合适的数据结构可以提高代码的效率和可维护性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++学习笔记(4)
  • 贪心算法---不同路径
  • sicp每日一题[1.42]
  • SpringBoot整合Thymleaf实现页面静态化
  • 【数据结构】—— 栈与队列
  • 【Prometheus】Prometheus的特点、数据采集方式、架构、数据模型详解
  • 4、Django Admin对自定义的计算字段进行排序
  • MacOS上升级Ruby版本
  • 儿童护眼大路灯怎么选择?5款儿童护眼落地灯分享
  • Maven介绍
  • 正则表达式优化建议
  • 项目经理职责
  • Eureka和Nacos有哪些区别?(面试版)
  • 《OpenCV计算机视觉》—— 图像形态学(腐蚀、膨胀等)
  • SprinBoot+Vue健康管管理微信小程序的设计与实现
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • MySQL主从复制读写分离及奇怪的问题
  • NSTimer学习笔记
  • python大佬养成计划----difflib模块
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Theano - 导数
  • Vue小说阅读器(仿追书神器)
  • 成为一名优秀的Developer的书单
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 前端代码风格自动化系列(二)之Commitlint
  • 微信小程序实战练习(仿五洲到家微信版)
  • 【云吞铺子】性能抖动剖析(二)
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • #NOIP 2014# day.2 T2 寻找道路
  • #NOIP 2014#Day.2 T3 解方程
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (12)目标检测_SSD基于pytorch搭建代码
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (定时器/计数器)中断系统(详解与使用)
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (九十四)函数和二维数组
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (四)c52学习之旅-流水LED灯
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .NET 使用 XPath 来读写 XML 文件
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET基础篇——反射的奥妙
  • .NET企业级应用架构设计系列之结尾篇
  • .net下简单快捷的数值高低位切换
  • .NET与 java通用的3DES加密解密方法
  • /etc/sudoers (root权限管理)
  • @hook扩展分析
  • @ModelAttribute注解使用
  • @PostConstruct 注解的方法用于资源的初始化