javaScript:数组的认识与使用以及相关案例

目录

一.前言

二.数组

1.认识

2.数组的声明 

1.let arr = [1,2,3,4]

2.结合构造函数,创建数组

注意:

 3.数组长度的设置和获取

注意 

4.删除数组元素

5.清空数组

三.获取数组元素

获取数组元素的几种方法

1.使用方括号 [] 访问元素:

2.使用循环遍历数组:

3.使用数组迭代方法:

四.遍历数组(详解) 

遍历数组常用的方法

1.for循环

2.for-in循环

3.forEach函数

 案例

1.猜拳比大小(具体游戏名不清楚)

整体思路

代码讲解

2.随机生成20个100-200的整数,输出最大的那个整数及其位置 

整体思路

代码讲解 

完整代码 


一.前言

        数组是一种数据结构,用于存储和组织多个相同类型的元素。它是编程语言中常见的基本数据结构之一。数组提供了一个连续的存储空间,其中每个元素都可以通过索引访问,索引通常从0开始。数组是一种常见又强大的数据结构,可以用于多种编程场景,例如存储一组数据、处理集合、排序和过滤等。了解数组的基本概念和使用方法对于进行编程任务非常重要。不同的编程语言可能有略微不同的语法和方法来操作数组。

二.数组

1.认识

数组

    1.数组属于对象类型(复杂数据类型)

    2.string , boolean ,number , undefind 属于基础类型(简单数据类型)

   

    数组中可以存放任意数据类型的数据

2.数组的声明 

1.let arr = [1,2,3,4]

let arr1 = [1,2,'封神榜','玉玲珑']console.log(arr1)

2.结合构造函数,创建数组

let arr4 = new Array(4);

//使用Array()构造函数创建数组let arr2 = new Array();console.log(arr2);

注意:

       使用 构造函数声明数组的时候,如果只有一个number的参数,则表示数组的长度,而数组内容为空,如果参数是两个及其以上的数字,则表示数组元素。

 //如果Array的参数是一个数字类型数据,表示数组长度,该数组中的数据都是空let arr4 = new Array(4);console.log(arr4);

      如果是两个及其以上的数字,则表示数组中的元素

//如果是两个及其以上的数字,则表示数组中的元素let arr5 = new Array(4,5);console.log(arr5);

 3.数组长度的设置和获取

         使用 数组的length属性,既可以设置数组长度,也可以获取数组长度

let arr6 = [false,'灰太狼',23,'刘备']console.log(arr6.length);//获取数组的长度,也就是数组中有几个元素,称为数组长度

注意 

形如 let arr2 = [,,,]

在计算该数组长度的时候最后一个逗号后面如果为空,则不计算入数组长度

  /*形如 let arr2 = [,,,] 在计算该数组长度的时候最后一个逗号后面如果为空,则不计算入数组长度*/let arr1 = [,,,3,4]let arr2 = [,,,]console.log(arr1.length , arr2.length);let arr3 = ['武松','武大郎','潘金莲','宋江']

4.删除数组元素

//删除数组元素arr6.length = 2console.log(arr6);

5.清空数组

 //清空数组arr6.length = 0console.log(arr6);

三.获取数组元素

     数组当中的每一个元素,都对应一个数组下标(索引),下标从0开始计算,获取数组中的数据可以通过arr[下标]的方式获取

 console.log(arr3[2]);//随机获取下标,范围是[0,3]let num = Math.floor(Math.random()*4)console.log(arr3[num]);

获取数组元素的几种方法

1.使用方括号 [] 访问元素:

        使用方括号和索引来直接获取数组中的元素。例如,array[0] 表示获取数组 array 中的第一个元素,array[1] 表示获取第二个元素,依此类推。

let array = [1, 2, 3, 4, 5];
let firstElement = array[0]; // 获取第一个元素,值为 1
let thirdElement = array[2]; // 获取第三个元素,值为 3

2.使用循环遍历数组:

        可以使用循环(如 forwhile)来迭代数组,从而逐个获取数组中的元素。通过循环的方式,可以获取数组的全部或部分元素。在 JavaScript 中

let array = [1, 2, 3, 4, 5];
for (let i = 0; i < array.length; i++) {console.log(array[i]); // 逐个输出数组元素
}

3.使用数组迭代方法:

许多编程语言提供了内置的数组迭代方法(如 forEach()map()filter() 等),这些方法可以方便地遍历数组并对每个元素执行相应的操作。

let array = [1, 2, 3, 4, 5];
array.forEach(function(element) {console.log(element); // 逐个输出数组元素
});

      无论使用哪种方法,都可以根据需要获取数组中的元素。请记住,索引应该大于等于0并且小于数组的长度,否则会导致错误。确保在使用索引访问元素时遵循适当的边界条件和索引范围,以避免出现数组越界的问题。

四.遍历数组(详解) 

遍历数组常用的方法

遍历数组

1.for循环

//for循环for (let i= 0; i < arr4.length; i++) {console.log(arr4[i]);document.write(arr4[i]+'<br>')}document.write('<hr>')

2.for-in循环

//for-in 循环,还可以循环对象/*for (const key in arr4) {key 是循环的下标,key是变量可以随意命名arr4 是要循环的对象}*/for (const aa in arr4) {document.write(arr4[aa]+'<br>')}document.write('<hr>')

3.forEach函数

/*Es6 中推荐使用 数组的方法,forEach()它里面传入的是一个函数,该函数具有一个形参 item , item 就是当前循环的数组元素*/arr4.forEach(function(item){document.write(item+'<br>')})

 案例

1.猜拳比大小(具体游戏名不清楚)

整体思路

      HTML部分定义了游戏的界面元素,包括标题、输入框和下拉选择框等。

      JavaScript部分实现了游戏的逻辑。代码中定义了两个数组arr1arr2分别表示玩家A的手指数和所说的数的可能取值。

      在点击按钮时,代码生成两个随机数sj1sj2,并根据这两个随机数从arr1arr2中选择对应的数值。然后根据玩家B所选择的手指数和所说的数,以及玩家A的手指数和所说的数,进行判断比较,判断胜负或平局,并通过alert函数弹出结果。

总体思路就是根据随机选择的手指数和所说的数,判断玩家A和玩家B的选择,并判断游戏的胜负关系。

代码讲解

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>猜数字</title>
</head>
<body><h3>A</h3><input type="text" value="" id="aa" placeholder="A的手指数"><input type="text" value="" id="bb" placeholder="A说的数"><h3>B</h3>B的手指数:<select name="" id="cc"><option value="0">0</option><option value="5">5</option><option value="10">10</option></select>B说的数:<select name="" id="dd"><option value="0">0</option><option value="5">5</option><option value="10">10</option><option value="5">15</option><option value="20">20</option></select> <br><br><button id="btn">Come On!</button>
</body>
</html>

        这部分是HTML代码,它定义了一个简单的页面结构。包括一个标题(<title>),两个文本输入框(<input>),两个下拉列表(<select>),一个按钮(<button>)。用户可通过输入文本框和选择下拉列表来参与猜数字游戏。

<script>//A的手指数let arr1 = [0,5,10]//A说的数let arr2 = [0,5,10,15,20]let aa = document.getElementById('aa')let bb = document.getElementById('bb')let cc = document.getElementById('cc')let dd = document.getElementById('dd')let btn = document.getElementById('btn')btn.onclick = function(){let sj1 = Math.floor(Math.random()*3)let sj2 = Math.floor(Math.random()*(5-sj1)+sj1)let c = cc.value-0let d = dd.value-0aa.value = arr1[sj1]bb.value = arr2[sj2] ;let a = aa.value-0let b = bb.value -0if (a+c==d&&a+c!=b) {alert('B赢')}else if(a+c==b&&a+c!=d){alert('A赢')}else{alert('平')}}
</script>

这部分是JavaScript代码,它实现了猜数字游戏的逻辑。让我们逐行解释它:

  • let arr1 = [0,5,10]:定义了数组arr1,其中包含了A可能选择的手指数。
  • let arr2 = [0,5,10,15,20]:定义了数组arr2,其中包含了A可能说的数。
  • let aa = document.getElementById('aa'):获取ID为aa的元素,即A的手指数输入框。
  • let bb = document.getElementById('bb'):获取ID为bb的元素,即A说的数输入框。
  • let cc = document.getElementById('cc'):获取ID为cc的元素,即B的手指数下拉列表。
  • let dd = document.getElementById('dd'):获取ID为dd的元素,即B说的数下拉列表。
  • let btn = document.getElementById('btn'):获取ID为btn的元素,即"Come On!"按钮。

接下来是按钮的点击事件处理函数:

  • btn.onclick = function(){...}:当按钮被点击时执行该函数。
  • let sj1 = Math.floor(Math.random()*3):生成一个0到2之间的随机整数,用于确定A的实际手指数。
  • let sj2 = Math.floor(Math.random()*(5-sj1)+sj1):生成一个在sj1和4之间的随机整数,用于确定A实际说的数。
  • let c = cc.value-0:获取B的手指数下拉列表选中的值,并转换为数字类型。
  • let d = dd.value-0:获取B说的数下拉列表选中的值,并转换为数字类型。
  • aa.value = arr1[sj1]:将A的手指数输入框的值设置为arr1中根据sj1确定的手指数。
  • bb.value = arr2[sj2]:将A说的数输入框的值设置为arr2中根据sj2确定的数。
  • let a = aa.value-0:将A的手指数转换为数字类型。
  • let b = bb.value -0:将A说的数转换为数字类型。

        根据A和B的手指数、说的数以及B的手指数与说的数之间的逻辑关系,进行对应的比较和判断,然后弹出相应的提示框。

  • if (a+c==d&&a+c!=b):如果A的手指数加上B的手指数等于B说的数,并且不等于A说的数,则弹出提示框显示"B赢"。
  • else if(a+c==b&&a+c!=d):如果A的手指数加上B的手指数等于A说的数,并且不等于B说的数,则弹出提示框显示"A赢"。
  • else:其他情况下,即A和B说的数不一致或与手指数之和不符,则弹出提示框显示"平"。

2.随机生成20个100-200的整数,输出最大的那个整数及其位置 

整体思路

  1. 创建一个长度为20的数组 arr,用来存储随机生成的整数。

  2. 初始化 max 变量为0,用来记录最大的整数。

  3. 初始化 y 变量为0,用来记录最大整数的位置。

  4. 使用 for 循环来生成20个随机整数,并将这些整数存储在数组 arr 中。

  5. 在生成过程中,使用内部的 for...in 循环来遍历数组 arr,并比较每个元素与当前的最大值 max。如果某个元素大于或等于 max,则更新 max 的值为该元素,并记录其位置到 y 变量中。

  6. 循环结束后,对 y 值进行修正(加1),因为数组的索引是从0开始的,而位置是从1开始计数。

  7. 最后,使用 document.write() 方法输出最大的整数和它的位置到网页中。

代码讲解 

//随机生成20个100-200的整数,输出最大的那个整数及其位置
let arr = new Array(20); // 声明一个长度为20的数组arr
let max = 0; // 初始化最大值为0
let y = 0; // 初始化最大值位置为0for (let i = 0; i < 20; i++) { // 循环20次arr[i] = Math.floor(Math.random() * 101 + 100); // 生成100-200之间的随机整数,并赋值给数组arr的第i个元素console.log(arr[i]); // 打印数组中的每个元素,用于查看生成的随机整数for (const i in arr) { // 遍历数组arrif (max <= arr[i]) { // 如果当前元素大于或等于最大值max = arr[i]; // 更新最大值y = Number(i); // 记录当前最大值的位置}}
}y += 1; // 将位置加1,以符合人类的计数习惯(位置从1开始)document.write('最大的数为:' + max); // 在网页中输出最大的整数
document.write('在第' + y + '位'); // 在网页中输出最大整数的位置
代码解释:

       首先,声明了一个长度为20的数组arr,用于存储随机生成的整数。
       接着,通过一个循环生成20个100到200之间的随机整数,并将它们赋值给数组arr的每个元素,并在控制台打印出来。
       然后,通过嵌套的for...in循环遍历数组arr,寻找最大的整数及其位置。如果当前元素大于或等于最大值max,则更新最大值和位置。
       最后,将位置加1,以符合人类的计数习惯,然后使用document.write()在网页中输出最大的整数和它的位置。

完整代码 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body></body>
</html>
<script>//随机生成20个100-200的整数,输出最大的那个整数及其位置let arr = new Array(20);let max=0let y = 0for (let i = 0; i <20; i++) {arr[i]= Math.floor(Math.random()*101+100)console.log(arr[i]);for (const i in arr) {if (max<=arr[i]) {max = arr[i]y = Number(i)}} }y += 1document.write('最大的数为:'+max)document.write('在第'+y+'位')
</script>

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

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

相关文章

Keepalived+Lvs高可用高性能负载配置

环境准备 IP配置VIPnode1192.168.134.170LVSKeepalived192.168.134.100node3192.168.134.172LVSKeepalived192.168.134.100node2192.168.134.171做web服务器使用node4192.168.134.173做web服务器使用 1、准备node1与node3环境&#xff08;安装LVS与Keepalived&#xff09;>…

基于微服务+Java+Spring Cloud +Vue+UniApp +MySql实现的智慧工地云平台源码

基于微服务JavaSpring Cloud VueUniApp MySql开发的智慧工地云平台源码 智慧工地概念&#xff1a; 智慧工地就是互联网建筑工地&#xff0c;是将互联网的理念和技术引入建筑工地&#xff0c;然后以物联网、移动互联网技术为基础&#xff0c;充分应用BIM、大数据、人工智能、移…

滚动条样式更改

::-webkit-scrollbar 滚动条整体部分&#xff0c;可以设置宽度啥的 ::-webkit-scrollbar-button 滚动条两端的按钮 ::-webkit-scrollbar-track 外层轨道 ::-webkit-scrollbar-track-piece 内层滚动槽 ::-webkit-scrollbar-thumb 滚动的滑块 ::-webkit-scrollbar…

Android布局【RelativeLayout】

文章目录 介绍常见属性根据父容器定位根据兄弟组件定位 通用属性margin 设置组件与父容器的边距padding 设置组件内部元素的边距 项目结构主要代码 介绍 RelativeLayout是一个相对布局&#xff0c;如果不指定对齐位置&#xff0c;都是默认相对于父容器的左上角的开始布局 常见…

TypeScript教程(二)基础语法与基础类型

一、基础语法 TypeScript由以下几个部分组成 1.模块 2.函数 3.变量 4.语句和表达式 5.注释 示例&#xff1a; Runoob.ts 文件代码&#xff1a; const hello : string "Hello World!" console.log(hello) 以上代码首先通过 tsc 命令编译&#xff1a; tsc …

MQTT宝典

文章目录 1.介绍2.发布和订阅3.MQTT 数据包结构4.Demo5.EMQX 1.介绍 什么是MQTT协议 MQTT&#xff08;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅&#xff08;publish/subscribe&#xff09;模式的“轻量级”通讯协议&#xff0c;该协议构建于TCP/IP协…

php、 go 语言怎么结合构建高性能高并发商城。

一、php、 go 语言怎么结合构建高性能高并发商城。 将PHP和Go语言结合起来构建高性能高并发的商城系统可以通过多种方法实现&#xff0c;以利用两种语言的优势。下面是一些可能的方法和策略&#xff1a; 1. **微服务架构&#xff1a;** 使用微服务架构&#xff0c;将系统拆分…

安卓快速开发

1.环境搭建 Android Studio下载网页&#xff1a;https://developer.android.google.cn/studio/index.html 第一次新建工程需要等待很长时间&#xff0c;新建一个Empty Views Activity 项目&#xff0c;右上角选择要运行的机器&#xff0c;运行就安装上去了(打开USB调试)。 2…

【Linux】UDP协议——传输层

目录 传输层 再谈端口号 端口号范围划分 认识知名端口号 两个问题 netstat与iostat pidof UDP协议 UDP协议格式 UDP协议的特点 面向数据报 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 传输层 在学习HTTP等应用层协议时&#xff0c;为了便于理解&#xff…

【实操】2023年npm组件库的创建发布流程

2022年的实践为基础&#xff0c;2023年我再建一个组件库【ZUI】。步骤回顾&#xff1a; 2022年的npm组件包的发布删除教程_npm i ant-design/pro-components 怎么删除_啥咕啦呛的博客-CSDN博客 1.在gitee上创建一个项目,相信你是会的 2.创建初始化项目&#xff0c;看吧&#…

泛型类接口方法学习

一、泛型 1 概念 泛型(Generics)&#xff0c;广泛的类型。最大用途是给集合容器添加标签&#xff0c;让开发人员知道容器里面放到是什么类型&#xff0c;并且自动对放入集合的元素进行类型检查。 类比实参和形参&#xff0c;我们在对方法中的变量操作时&#xff0c;并没有指…

深入理解高并发编程 - 深度解析 ThreadPoolExecutor 类

ThreadPoolExecutor 是 Java 标准库中用于创建和管理线程池的核心类之一。它实现了 ExecutorService 接口&#xff0c;提供了丰富的线程池管理功能。下面将通过源码解析来深入了解 ThreadPoolExecutor 类的工作原理和各个重要部分。 可以在 Java 源代码中找到 ThreadPoolExecu…

【新品发布】ChatWork企业知识库系统源码

系统简介 基于前后端分离架构以及Vue3、uni-app、ThinkPHP6.x、PostgreSQL、pgvector技术栈开发&#xff0c;包含PC端、H5端。 ChatWork支持问答式和文档式知识库&#xff0c;能够导入txt、doc、docx、pdf、md等多种格式文档。 导入数据完成向量化训练后&#xff0c;用户提问…

两个pdf合并成一个pdf怎么合并?这几个方法值得推荐

两个pdf合并成一个pdf怎么合并&#xff1f;pdf文件的合并是一个很常见的需求&#xff0c;特别是在处理工作文件或学习资料时。为了更好的帮助你了解如何将两个pdf文件合并成一个&#xff0c;下面就给大家详细介绍几种合并方法。 方法一&#xff1a;使用迅捷PDF转换器 这是一款…

小红书如何打造爆款引流吸粉?11个秘诀助你秒变达人!

在这个充满信息和内容的时代&#xff0c;小红书以其独特的社交平台特性和个性化内容吸引了众多用户。今天&#xff0c;我们就来揭秘小红书关注战略&#xff0c;了解如何在这个平台上打造独特的内容体验&#xff0c;与用户建立更亲近的连接。#小红书# 1、定位清晰&#xff0c;找…

【论文阅读】基于深度学习的时序预测——Pyraformer

系列文章链接 论文一&#xff1a;2020 Informer&#xff1a;长时序数据预测 论文二&#xff1a;2021 Autoformer&#xff1a;长序列数据预测 论文三&#xff1a;2022 FEDformer&#xff1a;长序列数据预测 论文四&#xff1a;2022 Non-Stationary Transformers&#xff1a;非平…

Python技巧----解压序列/可迭代对象赋值给多个变量

1 、解压序列赋值给多个变量 我们这里说的不是正常情况的一一赋值比如下面 >>> data = [ ACME, 5, 9, (2012, 12, 1) ] >>> name, shares, price, date = data >>> name ACME

页面跳转和两个页面之间的数据传递-鸿蒙ArkTS

页面跳转和两个页面之间的数据传递-ArkTS 页面跳转和两个页面之间的数据传递-ArkTS关于router的使用**跳转页面的实现方式。**页面接受跳转传递的参数页面返回及携带参数效果代码Index页面Second页面 参考资料 页面跳转和两个页面之间的数据传递-ArkTS 本篇文章主要是对两个页面…

TiDB在科捷物流神州金库核心系统的应用与实践

业务背景 北京科捷物流有限公司于2003年在北京正式成立&#xff0c;是ISO质量管理体系认证企业、国家AAAAA级物流企业、海关AEO高级认证企业&#xff0c;注册资金1亿元&#xff0c;是中国领先的大数据科技公司——神州控股的全资子公司。科捷物流融合B2B和B2C的客户需求&#…

网易有道押宝大模型,打响智能硬件突围战

本文转载自产业科技 自今年开年以来&#xff0c;AI大模型这场火势能不减&#xff0c;如今已燃到教育领域。 7月26日&#xff0c;网易有道举办了“powered by子曰”教育大模型应用成果发布会&#xff0c;推出国内首个教育领域垂直大模型“子曰”&#xff0c;并一口气发布了基于…