【你也能从零基础学会网站开发】Web建站之javascript入门篇 Array数组

news2024/12/23 10:07:16

🚀 个人主页 极客小俊
✍🏻 作者简介:web开发者、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

数组概述

实际开发中,总是面临大量数据存储的问题。JavaScript语言不像C/C++那样合适用于数据结构的设计,因此需要系统内部提供针对大量数据存储的工具,数组因此而产生。

JavaScript数组的目标是能组织存储各种各样的数据,并且访问方式和其它语言一样,特点是能混合存储类型不相同的数据。

数组的概念
JavaScript数组是指将多个数据对象编码存储、提供一致的存取方式的集合 。
与其它程序语言不同的是,JavaScript的数组元素的数据类型可以不相同。

数组元素:是指存储在数组中并赋予唯一索引号的数据段 ,各元素的数据类型可以是任意有效的JavaScript数据类型,元素按添加进数组的顺序存储于数组中。

创建数组

JavaScript中创建数组有以下几种方式:

1. 创建一个空数组 
2. 通过指定数组长度创建数组 
3. 通过指定数组元素创建数组 
4. 直接创建数组 
数组的分类

数组目前我们经常使用到的就是单维数组/一维数组多维数组的形式

单维数组/一维数组

如图

多维数组

如图

创建一个空数组

数组在创建时可以不包含任何元素数据,即空数组。

创建后返回一个数组对象,使用该对象可以往数组中添加元素。

语法如下

var Obj = new Array();

上述语句将创建一个空数组。

变量Obj引用创建后的数组对象,通过此变量可以操作数组,Array()为数组对象的构造函数!

通过指定数组长度创建数组

在创建数组时可以指定数组的元素长度,通过这种方式可以创建一个有指定元素个数的数组对象 。

语法如下

var Obj = new Array( Size );

Size指明新建的数组有多少个元素。
数组对象的length将被设置为Size,仅指定长度但没有实际填充元素及其数据的数组将得不到数据存储空间 !

通过指定数组元素创建数组

新建的数组将包含创建时指定的元素,通常用在数据已经准备就绪的场合。

语法如下

var 变量 = new Array(,值….);

创建数组演示:数组善于将每个独立的数据组织起来,提供一致的访问方式。
现在创建一个数组用于保存“Peter”、“Tom”、“Vicky”和“Jet”这几个学生的名字

// 通过指定元素创建数组
var students = new Array("Peter", "Tom", "Vicky", "Jet");
// 逐个输出数组中的名字
for (n in students) {
    // 将名字写入当前文档流中
    document.write(students[n] + " ");
}
创建二维数组

通过指定数组中的元素为数组的方式可以创建二维甚至多维数组

举个栗子

var cnweek=new Array(7);
for (var i=0;i<=6;i++){
	cnweek[i]=new Array(2);
}
cnweek[0][0]="星期日";
cnweek[0][1]="Sunday";
cnweek[1][0]="星期一";
cnweek[1][1]="Monday";
cnweek[6][0]="星期六";
cnweek[6][1]="Saturday";

直接创建数组

JavaScript创建数组的另一种简便的方式是使用[]运算符直接创建,数组的元素也是创建时被指定。这种方法的目标也是创建数组,与前面的方法相比仅仅是语法上的不同 。

例如:

var Obj = [ 元素1, 元素2, 元素3,, 元素N ];

数组元素的基本操作

JavaScript中, 我们主要操作数组元素的形式基本有如下几种:

  1. 读取数组元素
  2. 添加数组元素
  3. 删除数组元素
  4. 数组元素的个数(指数组的长度)

小提示: 尽管有很多种创建和操作,但通常使用其中一种就足够。

读取数组元素

读取数组元素最简单的方法就是使用[]运算符,使用[]运算符可以一次读取一个数组元素

语法如下

数组名[索引号/下标];

目标元素通常由下标索引号决定

例如: 读取第一个元素为数组名[0],依此类推

下面的代码从一个填有商品名字数组中读出第二种商品的名字。

var products = new Array( “洗衣粉”, “香皂”, “洗洁精” ); 	// 商品列表
var product = products[ 1 ];						   // 取出第二种商品
添加数组元素

JavaScript的数组可以动态添加新元素,也可以动态删除原有的元素

添加新元素通常使用Array对象的push方法,push方法是将新元素添加到数组的尾部。

使用unshift可以将指定个数的新元素插入数组的开始位置,形成新的数组 ,

添加元素的一般形式:

例如

var students = new Array();		    // 创建一个没有任何元素的数组
students.push( “Lily” );			// 将Lily的名字添加到数组中

也可以使用[]运算符指定一个新下标来添加新元素,新元素添加到指定的下标处。

如果指定的下标超过数组的长度,数组将被扩展为新下标指定的长度。

删除数组元素

通常使用delete运算符删除一个指定的元素,如果需要删除全部元素只需要删除数组对象即可。

使用语法

Delete  数组名[下标];

例如: 使用数组作为学生名单,现要删除数组中第一个元素

代码如下

var names = Array( “李莉”, “杨杨” );	// 有两个名字的名单
delete names[0];			       // 删除第一名字“莉莉”
移除数组顶端的元素

pop方法是移除数组末端的一个元素,而shift方法正好相反,其移除数组的第一个元素并将其返回。

该方法执行后数组剩下的元素向前移动,下标索引号重新调整从0开始按顺序赋予所有元素。

语法如下

数组名.shift( );

在大家所熟知的基本数据结构中,队列非常有用,其遵循选进先出(FIFO)的规则,与堆栈不同。

shift和push方法结合使用,可以将数组当成队列使用!

在数组顶端插入元素

unshift是将元素插入数组的首部。一次可以插入单个或多个元素,所有元素按顺序插入,操作完成后返回新数组的引用。

语法如下

数组名.unshift( [元素1, [ 元素2, [ 元素3, [, [元素N ] ] ] ] ] );

unshift方法的使用与前面讲过的各方法一样。
如果不计较元素插入的位置,则推荐使用push方法。
因为unshift方法将引发所有下标的改动,可能会影响依靠下标才能准确进行的计算

删除、替换或插入数组元素

splice方法的作用是,从一个数组中移除一个或多个元素。
剩下的元素组成一个数组,移除的元素组成另一个数组并返回它的引用。
同时,原数组可以在移除的开始位置处顺带插入一个或多个新元素,达到修改替换数组元素的目的。

数组名. splice( start, deleteCount, [ item1 [, item2 [ , . . . [ , itemN ] ] ] ] );

参数解释
start:必选项,表示从数组中剪切的起始位置下标索引号。
deleteCount:必选项,表示将从数组中切取的元素的个数。
item:可选项,表示切取时插入原数组切入点开始处的一个或多个元素,要求为有效的JavaScript

颠倒数组元素的顺序

可以使用reverse方法将一个Array对象中所有元素的次序反转,
然后返回元素顺序反转后的Array对象的引用

例如

数组名.reverse( );
对数组元素进行排序

Array对象的sort方法可以将一个数组中的所有元素排序。

执行时先将调用该方法的数组中的元素按用户指定的方法进行排序,排序后的所有元素构成一个新数组并返回之。

语法如下

数组名.sort( [ sortfunction ] )
数组元素的个数

数组对象的length(长度)属性指示了数组元素的个数。
通过设定length属性可以指定数组的长度。
在得知长度情况下可以方便的遍历整个数组!

读取数组元素个数信息的方法如下代码所示:

var Obj = new Array( 1, 2, 3 );
var count = Obj.length;

尽管指定了数组的length属性,真正的有效元素只包含已经存入数据的元素,其它没有真正填充数据的元素仍然为空。

数组常见操作方法

JavaScript中还为数组提供了很多常用的一些数组方法,让我们可以更好的去操作数组

如下表:

类别方法说明
连接数组join(bystr)返回由bystr连接数组元素组成的字符串
toString()返回由逗号(,)连接数组元素组成的字符串
concat(value,…)返回添加参数中元素后的数组
数组排序reverse()返回反向的数组
sort()返回排序后的数组
类别方法说明
获取子数组slice(start,end)通过数组元素起始和结束索引号获取子数组
splice(start, deleteCount, value)对数组指定位置进行删除和插入
进出栈操作push(value, …)数组末端入栈操作
pop()数组末端出栈操作
unshift(value,…)数组首端入栈操作
shift()数组首端出栈操作

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

更多 好玩 好用 好看的干货教程可以 点击下方关注❤️ 微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇

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

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

相关文章

Vue+SpringBoot打造农家乐订餐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核心代码4.1 查询菜品类型4.2 查询菜品4.3 加购菜品4.4 新增菜品收藏4.5 新增菜品留言 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的农家乐订餐系统&#xff0c…

RabbitMQ 安装登陆 提示:User can only log in via localhost

RabbitMQ默认提供了一个guest/guest用户&#xff0c;但是从3.3.0 版本以后该账号只能localhost登陆&#xff08;User can only log in via localhost&#xff09; 解决办法&#xff1a;通过命令行创建一个管理员账号 通过以下命令创建一个用户user&#xff0c;密码为user12345…

LVGL在VScode中安装模拟器运行配置笔记教程

1、LVGL模拟器工程搭建 LVGL(Light and Versatile Graphics Library,轻巧而多功能的图形库)是一个免费的开放源代码图形库,它提供创建具有易于使用的图形元素,精美的视觉效果和低内存占用的嵌入式GUI所需的一切。本文主要讲述如何实现在VScode中实现LVGL模拟器环境的搭建运行。…

开源是什么?——跟老吕学Python编程

开源是什么&#xff1f;——跟老吕学Python编程 开源是什么&#xff1f;开放源代码软件是什么&#xff1f;开源软件许可证是什么&#xff1f;开放源代码软件是什么&#xff1f;开放源代码的软件代表有什么&#xff1f;开放源代码软件与自由软件的概念 开源的定义是什么&#xf…

【Linux】第四十二站:线程局部存储与线程分离

一、线程的局部存储 1.实现多线程 如果我们想创建多线程&#xff0c;我们可以用下面的代码类似去实现 #include <iostream> #include <pthread.h> #include <string> #include <cstdlib> #include <unistd.h> #include <thread> #inclu…

AI智能答题系统是什么?

AI智能答题系统是一种基于人工智能技术的智能问答系统&#xff0c;旨在提供精准、高效的答题解答服务。该系统利用自然语言处理&#xff08;NLP&#xff09;、机器学习、知识图谱等多种技术&#xff0c;可以理解用户提出的问题&#xff0c;并在庞大的知识库或数据集中查找相关信…

鸿蒙报错:Hhvigor Update the SDKs by going to Tools > SDK Manager....

鸿蒙报错&#xff1a;Hhvigor Update the SDKs by going to Tools > SDK Manager… 打开setting里面的sdk&#xff0c;将API9工程下的全部勾上&#xff0c;应用下载 刚打开 js 和 Native 是没勾上的

LeetCode-102.题: 二叉树的层序遍历(原创)

【题目描述】 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 【题目链接…

Linux进程概念僵尸进程孤儿进程

文章目录 一、什么是进程二、进程的状态三、Linux是如何做的&#xff1f;3.1 R状态3.2 S状态3.3 D状态3.4 T状态3.5 t状态3.6 X状态3.7 Z状态 四、僵尸进程4.1 僵尸进程危害 五、孤儿进程 一、什么是进程 对于进程理解来说&#xff0c;在Windows上是也可以观察到的&#xff0c…

数据结构与算法第三套试卷小题

1.删除链表节点 **分析&#xff1a;**首先用指针变量q指向结点A的后继结点B&#xff0c;然后将结点B的值复制到结点A中&#xff0c;最后删除结点B。 2.时间复杂度的计算 **分析&#xff1a;**当涉及嵌套循环的时候&#xff0c;我们可以直接分析内层循环即可&#xff0c;看内…

sql注入基础学习

1.常用SQL语句 01、显示数据库 show databases&#xff1b; 02、打开数据库 use db name&#xff1b; 03、显示数据表 show tables&#xff1b; 04、显示表结构 describe table_name&#xff1b; 05、显示表中各字段信息&#xff0c;即表结构 show columns from table_nam…

【框架学习 | 第五篇】SpringMVC(常用注解、获取请求参数、域对象共享数据、拦截器、异常处理、上传/下载文件)

文章目录 1.SpringMVC简介1.1定义1.2主要组件1.3工作流程1.3.1简要流程1.3.2详细流程 1.4优缺点 2.常用注解3.获取请求参数3.1通过 HttpServletRequest 获取请求参数3.2通过控制器方法的形参获取请求参数3.2.1请求路径参数与方法形参一致3.2.2请求路径参数与方法形参不一致3.2.…

笔记本电脑使用时需要一直插电吗?笔记本正确的充电方式

随着科技的不断发展&#xff0c;笔记本电脑已经成为人们日常生活和工作中不可或缺的电子设备。而在使用笔记本电脑时&#xff0c;很多人会有一个疑问&#xff0c;那就是笔记本电脑使用时需要一直插电吗&#xff1f;本文将就此问题展开讨论。 不一定需要一直插电&#xff0c;如果…

C++:2024/3/11

作业1&#xff1a;编程 要求&#xff1a;提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 代码&#xff1a; #include <iostream>using namespace std;int main() {string str;cout << "请输入一个字…

sql-mysql可视化工具Workbench导入sql文件

mysql可视化工具Workbench导入sql文件 1、打开workbench2、导入sql文件3、第一行加上库名4、开始运行 1、打开workbench 2、导入sql文件 3、第一行加上库名 4、开始运行

参与Penpad launch任务,实现Penpad与Scroll的双空投

在比特币 ETF 、BTC 减半等利好消息的持续推动下&#xff0c;加密市场逐渐进入到新一轮牛市周期中。除了以太坊 Layer1 生态 TVL 不断飙升外&#xff0c;Layer2 赛道 TVL 也在不断飙升并且屡创新高。 而在牛市背景下&#xff0c;Layer2 空投所带来的财富效应预期正在被进一步拉…

IAB视频广告标准《数字视频和有线电视广告格式指南》之 目录和概述及视频配套广告 - 我为什么要翻译介绍美国人工智能科技公司IAB系列(2)

写在前面 谈及到中国企业走入国际市场&#xff0c;拓展海外营销渠道的时候&#xff0c;如果单纯依靠一个小公司去国外做广告&#xff0c;拉渠道&#xff0c;找代理公司&#xff0c;从售前到售后&#xff0c;都是非常不现实的。我们可以回想一下40年前&#xff0c;30年前&#x…

Facebook商城号为什么被封?如何防封?

由于Facebook商城的高利润空间&#xff0c;越来越多的跨境电商商家注意到它的存在。Facebook作为全球最大、用户量最大的社媒平台&#xff0c;同时也孕育了一个巨大的商业生态&#xff0c;包括广告投放、商城交易等。依托背后的大流量&#xff0c;Facebook商城起号较快&#xf…

接口测试\接口测试脚本之Jsoup解析HTML

第一次接触jsoup还是在处理收货地址的时候&#xff0c;当时在写一个下单流程&#xff0c;需要省市区id以及详细门牌号等等&#xff0c;因此同事介绍了jsoup,闲来无事&#xff0c;在此闲扯一番&#xff01; 1.我们来看下&#xff0c;什么是jsoup,先来看看官方文档是怎么说的&am…

【深度学习】换脸新科技,InstantID: Zero-shot Identity-Preserving Generation in Seconds

论文&#xff1a;https://arxiv.org/abs/2401.07519 代码:https://github.com/InstantID/InstantID demo&#xff1a;https://huggingface.co/spaces/InstantX/InstantID 文章目录 1 引言2 相关工作2.1 文本到图像扩散模型2.2 主题驱动的图像生成2.3 保持ID的图像生成 3 方法3.…