JS数据结构&算法学习——数组

简介: 数组是我们的老朋友了,一般情况,数组是用来存储同一数据类型的值,比如说一个数组内存有一系列对象形式,存储一系列字符串,一系列数值,等等

数组

认识数组

数组是我们的老朋友了,一般情况,数组是用来存储同一数据类型的值,比如说一个数组内存有一系列对象形式,存储一系列字符串,一系列数值,等等,JS中数组内可以存放不同类型的值,但是这种用法不推荐使用

除此之外数组的物理地址是相邻的,即在计算机内存储的地址。

创建数组

在JS创建数组常常使用new,我们也可以在创建的时候同时给数组赋值

var ary = new Array('1','2')
复制代码

当然还有最常用也是最推荐的创建方法

var ary = ['1','2']
复制代码

数组遍历

想在数组中查找一个元素或者想知道某个数组的长度我们最常用的就是对数组进行遍历

我们最常见的遍历大概就是使用for循环来对数组进行遍历

for (var i = 0; i < ary.length; i++) {
    alert(ary[i])
}
复制代码

但是JS中已经封装好了数组的一些迭代方法可以让我们更快捷得进行数组遍历

  1. forEach :无法在过程中终止,需要遍历每个元素来查找。
const arr = ['我','你','他']
   arr.forEach((item,index) => {
       if(item === '你') {
           console.log(index)
       }
   })
复制代码
  1. some:在找到对应项后可以通过retrun true 来终止some循环
const arr = ['我','你','他']
   arr.some((item,index) => {
       if(item === "你") {
           return true;
           //终止循环
       }
   })
复制代码
  1. every: 返回每一项是否满足判断条件的布尔值
const arr = [
       {id:1,name:'衣服',state:true},
       {id:2,name:'水果',state:true},
       {id:3,name:'电脑',state:true}
   ]
const result = arr.every(item => item.state == true)
复制代码

数组扩容

正常来讲常见语言的数组的容量不能自动改变的,我们需要进行扩容操作,在JS中扩容数组是比较简单的

ary.length = 10
复制代码

或者我们直接添加元素

ary[ary.length] = 9
复制代码

或者使用push方法在数组末尾添加元素

numbers.push(11)
复制代码

但是如果是比较底层的数组我们需要进行一些复杂的操作

1.webp.jpg

如果我们想扩容数组是需要讲一个数组copy到一个长度更长的数组内,链表和数组的区别就是如此,链表可以无限扩容,但是数组不能,数组的扩容是比较耗时的,报考删除和添加在内,因为本质上和扩容是一样的,但是查找相对于链表还是快的,直接使用下标就可以进行查找。

增删改获

  1. 增加元素:增加也就是添加元素,上文已提及到扩容,但是这里要提到如果我们想要在数组中间添加一个元素我们该怎么办呢?
var ary =['1','2','3','4']
复制代码
  1. 这里我们想要在2与3之间添加一个元素,我们该怎么做?
for (var i = ary.length+1; i = 3; i--) {
    ary[i] = ary[i-1]
}
ary[3] = '5'
复制代码
  1. 它的思路是这样的,我们可以使用一个for循环将2后面的元素位置逐次向后移动,这里注意的是从尾开始移动,在移动到3的时候停止移动并使用数组下标直接赋值,即可完成任意位置的添加插入
  2. 删除元素
    正常我们删除数组的一个元素的话比较常用的是JS提供的pop()来删除数组末尾的元素
var ary =['1','2','3','4']
ary.pop()
console.log(ary)
复制代码
  1. 但是如果我们想要删除数组内任意位置的元素的思路和在任意位置添加元素思路差不多
var delet = 2
for (var i = delet; i < ary.length; i++) {
    ary[i] = ary[i+1]
}
ary.pop()
复制代码
  1. 可以先声明你要删除的数组下标是多少,然后从删除目标的位置开始,让后面下标的元素覆盖掉前面的元素,最后使用pop()来完成任意位置的元素删除
  2. 改变数组任意位置元素和获取数组任意位置元素只需要利用下标就好了!
ary[1] = '3'
console.log(ary[0])



相关文章
|
2月前
|
算法 数据处理 C语言
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
68 1
|
3天前
|
负载均衡 算法
架构学习:7种负载均衡算法策略
四层负载均衡包括数据链路层、网络层和应用层负载均衡。数据链路层通过修改MAC地址转发帧;网络层通过改变IP地址实现数据包转发;应用层有多种策略,如轮循、权重轮循、随机、权重随机、一致性哈希、响应速度和最少连接数均衡,确保请求合理分配到服务器,提升性能与稳定性。
51 11
架构学习:7种负载均衡算法策略
|
11天前
|
存储 监控 算法
局域网网络管控里 Node.js 红黑树算法的绝妙运用
在数字化办公中,局域网网络管控至关重要。红黑树作为一种自平衡二叉搜索树,凭借其高效的数据管理和平衡机制,在局域网设备状态管理中大放异彩。通过Node.js实现红黑树算法,可快速插入、查找和更新设备信息(如IP地址、带宽等),确保网络管理员实时监控和优化网络资源,提升局域网的稳定性和安全性。未来,随着技术融合,红黑树将在网络管控中持续进化,助力构建高效、安全的局域网络生态。
30 9
|
9天前
|
存储 算法 测试技术
【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
本任务旨在实现二叉树的遍历,包括先序、中序、后序和层次遍历。首先介绍了二叉树的基本概念与结构定义,并通过C++代码示例展示了如何定义二叉树节点及构建二叉树。接着详细讲解了四种遍历方法的递归实现逻辑,以及层次遍历中队列的应用。最后提供了测试用例和预期输出,确保代码正确性。通过这些内容,帮助读者理解并掌握二叉树遍历的核心思想与实现技巧。
31 2
|
25天前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
56 20
|
17天前
|
监控 算法 JavaScript
基于 Node.js Socket 算法搭建局域网屏幕监控系统
在数字化办公环境中,局域网屏幕监控系统至关重要。基于Node.js的Socket算法实现高效、稳定的实时屏幕数据传输,助力企业保障信息安全、监督工作状态和远程技术支持。通过Socket建立监控端与被监控端的数据桥梁,确保实时画面呈现。实际部署需合理分配带宽并加密传输,确保信息安全。企业在使用时应权衡利弊,遵循法规,保障员工权益。
31 7
|
15天前
|
存储 监控 JavaScript
深度探秘:运用 Node.js 哈希表算法剖析员工工作时间玩游戏现象
在现代企业运营中,确保员工工作时间高效专注至关重要。为应对员工工作时间玩游戏的问题,本文聚焦Node.js环境下的哈希表算法,展示其如何通过快速查找和高效记录员工游戏行为,帮助企业精准监测与分析,遏制此类现象。哈希表以IP地址等为键,存储游戏网址、时长等信息,结合冲突处理与动态更新机制,确保数据完整性和时效性,助力企业管理层优化工作效率。
26 3
|
2月前
|
存储 算法 搜索推荐
Python 中数据结构和算法的关系
数据结构是算法的载体,算法是对数据结构的操作和运用。它们共同构成了计算机程序的核心,对于提高程序的质量和性能具有至关重要的作用
|
2月前
|
数据采集 存储 算法
Python 中的数据结构和算法优化策略
Python中的数据结构和算法如何进行优化?
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
79 1

热门文章

最新文章