JS基础第六天:创建数组 遍历的基础方法

2024-06-03 10:38

本文主要是介绍JS基础第六天:创建数组 遍历的基础方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.***数组:

什么是: 内存中连续存储多个数据的数据结构,再起一个统一的名字

为什么: 普通的变量只能存储一个数据

程序=数据结构+算法:

算法: 解决问题的步骤

数据结构: 数据在内存中的存储结构

好的数据结构可以极大的提高程序的执行效率

何时: 只要存储多个连续的数据

如何创建: 3种:

1. 创建空数组: 2种:

1. 数组直接量: var arr=[];

2. 用new: var arr=new Array();

新建 数组

何时: 在创建数组时,还不知道数组中的元素内容时

2. 创建数组同时,初始化输出中的元素:

1. 数组直接量: var arr=[元素1,元素2,...];

2. 用new: var arr=new Array(元素1,元素2,...);

何时: 在创建数组时,已经知道数组的元素内容

3. 创建n个空元素的数组:

用new: var arr=new Array(n);

数组是引用类型的对象: vs 原始类型的值

原始类型的值: 数据直接保存在本地的数据类型,number, string, boolean, null, undefined

引用类型的对象: 数据无法直接保存在变量本地的数据类型

如何存储: 在变量之外开辟独立的存储空间。变量中仅保存外部存储空间的地址

回顾: 按值传递:

两个变量间赋值时,或将变量作为参数传入函数时,其实只是将原变量中的值复制一个副本给对方!

结果: 对原始类型的值: 修改新变量,不影响原变量

为什么: 复制的是原始的值

对引用类型的对象: 通过新变量修改对象,等效于直接修改原对象。

为什么: 仅复制地址值,原对象不增加

垃圾回收: 引擎会自动释放不再使用的对象的空间

垃圾回收器: 自动记录对象的引用次数,并释放不再被任何变量引用的对象的 小程序

伴随js主程序并行执行。

原理: 创建对象时,每个对象都有一个属性:引用计数器,用来记录引用对象的变量个数

*如果变量不再使用对象时,要将变量赋值为null*

对象的引用计数器-1

垃圾回收器会自动寻找引用计数器为0的对象,释放

访问数组中的元素:

元素: 数组中每个数据都是一个元素

如何访问: 下标: 数组中唯一标识每个元素存储位置的序号

特点: 从0开始,连续不重复

何时: 只要访问数组元素,只能用下标

如何: 数组名[i]——用法和单个变量完全一样!

数组的length属性: 记录了数组中理论上的元素个数

length属性的值永远是最大下标+1

固定套路:

1.获得数组最后一个元素: arr[arr.length-1]

2.获得倒数第n个元素的位置: arr[arr.length-n]

3.在数组末尾追加一个新元素: arr[arr.length]=新值

4.数组缩容: 减小arr.length的数值,会删除结尾的多余元素。

5.遍历数组: 依次访问数组中每个元素,对每个元素执行相同的操作

for(var i=0;i<arr.length;i++){

arr[i]//当前正在遍历的元素

}

特殊: 三个不限制:

1. 不限制数组的元素个数:长度可变

2. 不限制下标越界:

获取元素值: 不报错!返回undefined

修改元素指: 不报错! 自动在指定位置创建新元素,并且自动修改length属性为最大下标+1

如果下标不连续的数组——稀疏数组

3. 不限制元素的数据类型:

1. ***关联数组:

索引数组: 下标为数字的数组

什么是关联数组: 可自定义下标名称的数组

为什么: 索引数组中的数字下标没有明确的意义

何时: 只要希望每个元素都有专门的名称时

如何: 2步:

1. 创建空数组

2. 向空数组中添加新元素,并自定义下标名称

索引数组 vs 关联数组:

1. 已字符串输出 不能用字符串输出

2. 下标是数字 下标是自定义的字符串

3. length属性有效 length属性失效(=0)

4. 访问元素,都用数组名["下标"]

5. 可用for循环遍历 不能用for循环遍历——for in

遍历关联数组: for in循环

for(var key in hash){

key//只是元素的下标名

hash[key]//当前元素值

}

***其实: js底层,一切对象都是关联数组:

比如: 索引数组,window等

hash: 散列算法,接受一个字符串,并计算出尽量不重复的序号

不同的字符串,计量计算出不同的序号

相同的字符串,一定计算出相同的序号

关联数组,也叫hash数组

原理:

存入元素: 将字符串类型的元素名,交给hash算法,计算出一个尽量不重复的数字。再将元素值,存入数字表示的位置

获取元素: 将要查找的元素名, 交给hash算法,计算出和存入时完全一致的序号,直接到序号标识的位置获取元素值。

查找: 索引 hash数组

遍历 不用遍历

受存储位置影响 和存储位置无关

受数组元素个数影响 和数组中元素个数无关

总结: 今后只要希望快速查找元素时,就用hash数组

数组API:

1.数组转字符串:

1. String(arr): 将arr中每个元素转为字符串,用逗号分隔

固定套路: 对数组拍照: 用于鉴别是否数组被修改过

2. arr.join("连接符"): 将arr中每个元素转为字符串,用自定义的连接符分隔

固定套路:

1.将字符组成单词: chars.join("")->无缝拼接

扩展: 判断数组是空数组: arr.join("")==""

2.将单词组成句子: words.join(" ")

3.将数组转化为页面元素的内容:

这篇关于JS基础第六天:创建数组 遍历的基础方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026756

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

hdu 1166 敌兵布阵(树状数组 or 线段树)

题意是求一个线段的和,在线段上可以进行加减的修改。 树状数组的模板题。 代码: #include <stdio.h>#include <string.h>const int maxn = 50000 + 1;int c[maxn];int n;int lowbit(int x){return x & -x;}void add(int x, int num){while