二.数据结构——数组

数组的定义

  1. 是一种由相同类型的元素组成的数据结构。
  2. 它在内存中连续存储着一系列的元素,并且通过每个元素的索引来访问数组中的特定元素。
  3. 数组的容量也就是长度会在一开始就被确定

优点

  1. 快速访问:由于数组的元素被存储在连续的内存位置中,因此可以通过下标快速访问数组的任意元素。这使得数组的访问速度非常快,特别是在对元素进行操作时,例如插入、删除或更新元素。

  2. 高效的内存利用:由于数组中的元素存储在连续的内存位置中,因此数组的内存利用率通常比链表等其他数据结构更高。

  3. 简单易用:数组是一种基本数据结构,易于使用和编写。大多数编程语言都提供了原生的数组类型和下标访问操作,这使得数组的使用和操作非常简单。

缺点

  1. 不易扩展:在大多数编程语言中,数组的大小是固定的。如果需要添加更多元素,通常需要重建一个更大的数组,将原始数组中的元素复制到新数组中。这可能会导致性能问题和额外的内存消耗。

  2. 插入和删除操作较慢:向数组中插入或删除元素时,需要将后面的元素全部移动,这可能会导致性能下降,特别是在需要扩展数组大小时更为明显。
    在这里插入图片描述

  3. 不适合存储大型数据集:由于数组在内存中连续存储,因此在存储大型数据集时可能会导致内存问题。大型数组可能会超出系统内存的限制而无法创建。

js内数组结构

了解了数组的定义后,我们就会发现js里面的数组是极为特殊的。它即可以存放多种数据类型,也可以随时扩充容量,貌似完全不能够称作为数组这种数据结构。

实现原理
事实上,js里面的数组可以看作是使用哈希表实现的一种特殊对象。
哈希表是一种以键值对形式存储数据的数据结构,其中键通过哈希函数转换为对应的索引,然后将值存储在数组的相应位置上。通过哈希表的方式,JavaScript 数组内部实际上是一个散列表,每个元素通过哈希函数映射到不同的索引位置。

特点
由于 JavaScript 中的数组是通过对象来实现的,因此它具有一些对象的特点。例如,可以在数组中存储任意类型的值,如数字、字符串、对象、函数等。数组还可以包含其他数组或对象,形成多维数组或者复杂的数据结构。

另一个重要的特点是,由于数组本质上是一个对象,它继承了对象的一些方法和属性。例如,可以使用 Object.keys() 来获取数组中的键名,使用 Object.values() 来获取数组中的值,并使用 Object.hasOwnProperty() 来判断数组中是否存在某个键。

缺点
然而,需要注意的是,与传统意义上的数组相比,JavaScript 中的数组具有一些缺点。由于底层实现的原因,JavaScript 数组在执行某些操作时可能会比较慢。例如,插入或删除元素时,需要重新分配内存空间并复制元素,这可能会导致较慢的性能。此外,由于数组的元素并非连续存储,随机访问元素的性能也可能相对较低。

总的来说,js的数组可以看作是披着数组皮的对象,但是因为底层api的封装支撑,让他有了数组的一些特性,甚至比原本的数组类型功能更强大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CEN02 - Installing Python on Your Computer

文章目录 I. IntroductionII. Installing Python1. Download the latest version of Python from the official website2. Run the installer and follow the installation wizard3. Ensure that the "Add Python.exe to PATH" checkbox is checked for easier comma…

阻碍“元宇宙”游戏行业发展的最大瓶颈是什么?

很显然,我们现在还没看到真正的“元宇宙”产品,在3-5年内也不太可能看到这样的产品。按照米哈游CEO蔡浩宇的说法,2030年希望建成一个“上亿人愿意生活在其中的虚拟世界”,那也是八年以后的事情了。 原因很简单:技术不成…

机械设备展示预约小程序作业是什么

机械产品具备较高的市场需求度,由于具备批发和高价格属性,所以除了线下公司/门店外,线上主要以展示、咨询、获取线索转化等为主,当然线上直接销售也有很高的直接转化率。 那么商家通过【雨科】平台搭建机械设备展示预约小程序能实…

无需公网IP实现公网远程访问本地WebDAV服务

windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…

【虚拟机磁盘扩容】 centos7把/dev/sda的磁盘空间分给根目录

一、修改硬盘大小 关闭虚拟机→设置→硬盘→修改到自己需要的磁盘大小 二、查看根目录当前磁盘使用情况统计 df -h 注:虽然在第1步已经设置过新的磁盘大小为50G,但是这里明显可以看出总磁盘大小依旧是之前的20G,这就涉及到分区问题。 三、…

物联网安全芯片ACL16 采用 32 位内核,片内集成多种安全密码模块 且低成本、低功耗

ACL16 芯片是研制的一款32 位的安全芯片,专门面向低成本、低功耗的应用领域, 特别针对各类 USB KEY 和安全 SE 等市场提供完善而有竞争力的解决方案。芯片采用 32 位内核,片内集成多种安全密码模块,包括SM1、 SM2、SM3、 SM4 算法…

【Linux】less 命令使用

less命令 less 与 more 类似。 less是一个非常常用的文本查看工具,它可以用于查看任意大小的文本文件,支持滚动翻页、搜索、标记等功能。在本文中,我们将详细介绍less命令的用法、参数和实例,并对其背后的原理和相关技术进行简要…

基于深度学习YoloV8的火焰烟雾检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介简介YoloV8模型火焰烟雾检测系统模型训练实时检测 应用领域 二、功能三、系统四. 总结 一项目简介 # 基于深度学习YoloV8的火焰烟雾检测系统介绍 简介 深…

MSSQ 程序集使用方法

1.C# 写一个程序 1.1新建一个项目【类库【.Net FrameWork】 1.2编写代码 删除 namespace ApiSQLClass { } 代码如下:【具体调用API模式根据具体编写】 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.…

软包电池市场分析:中国市场现状及未来发展趋势

根据封装方式和形状不同,动力电池可分为方形电池、软包电池和圆柱电池。软包锂电池所用的关键材料(正极材料、负极材料、电解液及隔膜)与传统的钢壳、铝壳锂电池之间的区别不大,最大的不同之处在于软包电池需要铝塑膜,这也是软包锂离子电池中…

扭矩系数和摩擦系数应该关注哪一个?——SunTorque智能扭矩系统

螺栓,作为设备的主要连接方式之一,应用在多个关键部位,是关系到整个设备的安全可靠运行的保障。例如,在风电机组中高强度螺栓就是为了保证较高的预紧力;但是,螺栓的质量、装配方法、拧紧工具等等都会影响到…

class034 链表高频题目和必备技巧【算法】

class034 链表高频题目和必备技巧【算法】 code1 160. 相交链表 // 返回两个无环链表相交的第一个节点 // 测试链接 : https://leetcode.cn/problems/intersection-of-two-linked-lists/ 容器法:HashSet记录list1,遍历list2,看是否包含在Ha…

从零开始学Python网络编程:轻松搭建服务器和客户端

Python网络编程的基础知识是成为一名全面的Python开发者的关键一步。网络编程使我们能够创建各种类型的网络应用程序,从简单的客户端/服务器应用到复杂的Web应用和网络爬虫。 在本文中,我将会学习到Python网络编程的基础概念,包括套接字、服…

Spring boot -- 学习HttpMessageConverter

文章目录 1. Json格式数据获取2. 为什么返回Json格式的数据2.1 注解SpringBootAppliaction2.1.1 SpringBootConfiguration2.1.2 ComponentScan2.1.3 EnableAutoConfiguration2.1.3.1 HttpMessageConvertersAutoConfiguration2.1.3.2 WebMvcAutoConfiguration 2.2 注解RestContr…

石油化工园区:安全管理工作中的挑战与措施

石油化工园区:安全管理工作中的挑战与措施 石油化工园区是一种设备设施多且结构复杂的工业园区,涉及到易燃易爆或有毒介质,同时园区内有大量的工作人员和工作车辆等动态参与要素。由于园区的特殊性质,安全管理工作显然具备较高的挑…

农用烘干机市场分析:我国市场规模为190亿元

农用烘干机是运用在农业烘干领域的传统干燥设备之一,主要是为了农副产品直接使用或满足进一步加工的需要。农用烘干机具有操作弹性大、适应性强、处理能力大、设备运转可靠等优点,能大幅度提高农副产品烘干效率。现阶段,我国农用烘干机的市场…

AI助力智慧农业,基于YOLOv6最新版本模型开发构建不同参数量级农田场景下庄稼作物、杂草智能检测识别系统

智慧农业随着数字化信息化浪潮的演变有了新的定义,在前面的系列博文中,我们从一些现实世界里面的所见所想所感进行了很多对应的实践,感兴趣的话可以自行移步阅读即可: 《自建数据集,基于YOLOv7开发构建农田场景下杂草…

element中el-table表头通过header-row-style设置样式

文章目录 一、知识点二、设置全部表头2.1、方式一2.2、方式二 三、设置某个表头四、最后 一、知识点 有些时候需要给element-ui表头设置不同样式,比如居中、背景色、字体大小等等,这时就可以用到本文要说的属性header-row-style。官网说明如下所示&…

通用plantuml 时序图(Sequence Diagram)模板头

通用plantuml文件 startuml participant Admin order 0 #87CEFA // 参与者、顺序、颜色 participant Student order 1 #87CEFA participant Teacher order 2 #87CEFA participant TestPlayer order 3 #87CEFA participant Class order 4 #87CEFA participant Subject order …

关于支持向量机(SVM)的QSAR的结果的分析

图中的灰色部分代表了预测pIC50值与实测pIC50值之间的95%置信区间(confidence interval)。这个区间提供了一个预测误差的范围,意味着在统计上,我们有95%的把握认为真实值会落在这个区间内。具体来说,这个置信区间围绕着…