深入解析JavaScript数据结构:从基础到实践应用

深入解析JavaScript数据结构:从基础到实践应用

roadmap-retos-programacion Ruta de estudio basada en ejercicios de código semanales en 2024 de la comunidad MoureDev para aprender y practicar lógica usando cualquier lenguaje de programación. roadmap-retos-programacion 项目地址: https://gitcode.com/gh_mirrors/ro/roadmap-retos-programacion

本文基于编程学习路线中的数据结构挑战,重点讲解JavaScript中三种核心数据结构:数组(Array)、集合(Set)和对象(Object)的使用方法,并通过实际示例演示如何操作这些结构。

数组(Array):有序元素集合

数组是JavaScript中最基础也是最常用的数据结构之一,它提供了一种有序存储多个值的方式。

数组的基本操作

创建数组有两种主要方式:

const arr = new Array(10); // 创建长度为10的空数组
const arra = []; // 更推荐的创建空数组方式

插入元素可以使用push()方法:

let videoJuegos = ['fifa','Assassins Creed','Forza'];
videoJuegos.push('Call of Duty'); // 在末尾添加元素

删除元素有多种方式:

let ultimoJuegoBorrado = videoJuegos.pop(); // 删除并返回最后一个元素
let posicionJuegoBorrado = videoJuegos.splice(1,1); // 从位置1删除1个元素

访问和更新元素通过索引:

console.log(videoJuegos[1]); // 访问第二个元素
videoJuegos[1] = 'Mario Bros'; // 更新第二个元素

排序数组使用sort()方法:

let ordenVideoJuegos = videoJuegos.sort(); // 按字母顺序排序

集合(Set):唯一值集合

Set是一种特殊的数据结构,它只存储唯一的值,自动去重。

Set的基本操作

创建Set

let marcaCars = ['Renault','Mazda','Toyota','Jeep','Porche','Tesla'];
let setsMarcasCars = new Set(marcaCars);

添加元素

setsMarcasCars.add('mercedes'); // 添加新元素

删除元素

setsMarcasCars.delete('Toyota'); // 删除指定元素

检查存在

if (setsMarcasCars.has('Renault')) {
    // 执行操作
}

排序Set需要先转换为数组:

let ordenCars = Array.from(setsMarcasCars).sort();
let carsOrdenado = new Set(ordenCars);

对象(Object):键值对集合

对象是JavaScript中最灵活的数据结构,用于存储键值对。

对象的基本操作

创建对象

let serieHouseOfDragon = {
    reina: 'Rhaenyra Targaryen',
    villano: 'Aemond Targaryen',
    temporadas: 2,
    NombreDeLasCasas: ['Casa Targaryen','Casa Hightower']
};

添加/更新属性

serieHouseOfDragon.villano = 'Aegon II Targaryen'; // 更新属性
serieHouseOfDragon['NumeroDeSoldados'] = 1000; // 添加新属性

删除属性

delete serieHouseOfDragon.temporadas;

访问嵌套属性

console.log(serieHouseOfDragon.NombreDeLasCasas[1]);

排序对象属性

let ordenHouse = Object.entries(serieHouseOfDragon).sort((a,b)=>a[0].localeCompare(b[0]));
let houseOrdenada = Object.fromEntries(ordenHouse);

实战应用:终端联系人管理系统

为了综合运用这些数据结构,我们实现了一个基于Node.js的命令行联系人管理系统。

系统功能

  1. 查找联系人:通过姓名查找电话号码
  2. 添加联系人:验证电话号码格式
  3. 更新联系人:修改已有联系人的信息
  4. 删除联系人:从系统中移除联系人
  5. 退出系统:结束程序

关键实现

使用对象存储联系人信息:

let contactos = {}; // 键为姓名,值为电话号码

电话号码验证逻辑:

if (telefonoStr.length > 11) {
    console.log('El número no es válido, es mayor a 11 dígitos');
}

交互式命令行界面使用readline模块实现:

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

总结

通过本文的学习,我们掌握了JavaScript中三种核心数据结构的使用方法及其常见操作。数组适合有序数据存储,Set保证数据唯一性,而对象则提供了灵活的键值对存储方式。最后通过一个完整的联系人管理系统将这些知识综合运用,展示了数据结构在实际开发中的应用价值。

理解这些数据结构的特点和适用场景,将帮助开发者编写更高效、更易维护的JavaScript代码。

roadmap-retos-programacion Ruta de estudio basada en ejercicios de código semanales en 2024 de la comunidad MoureDev para aprender y practicar lógica usando cualquier lenguaje de programación. roadmap-retos-programacion 项目地址: https://gitcode.com/gh_mirrors/ro/roadmap-retos-programacion

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孔祯拓Belinda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值