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

news/2024/6/18 21:35:49 标签: 算法, 数据结构

目录

一.前言

二.数组

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 = 2
  console.log(arr6);

5.清空数组

 //清空数组
  arr6.length = 0
  console.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-0
        let d = dd.value-0
        aa.value = arr1[sj1]
        bb.value = arr2[sj2] ;
        let a = aa.value-0
        let b = bb.value -0
        if (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; // 初始化最大值位置为0

for (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) { // 遍历数组arr
        if (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 = Array(20)
    let max = 0
    let y = 0
    for (let i = 0; i < 20; i++) {
      arr[i] =  Math.floor(Math.random()*101+100)
        console.log(arr[i]);
        if (arr[i]>=max) {
            max = arr[i]
            y = Number(i)+1
        }
    }
    document.write(max+'<br>')
    document.write(y)
</script>


http://www.niftyadmin.cn/n/4940803.html

相关文章

2023HVV最新0day、1day消息含POC、EXP

点击"仙网攻城狮”关注我们哦~ 不想当研发的渗透人不是好运维 让我们每天进步一点点 简介 2023HW-8月10号0day、1day漏洞汇总&#xff0c;包含以下漏洞需要自取。 链接&#xff1a;https://pan.baidu.com/s/1duOyDNjYBPKfC5eB9ZHA2Q 提取码&#xff1a;6666 通达OA sql注入…

Vue3.2+TS的defineExpose的应用

defineExpose通俗来讲&#xff0c;其实就是讲子组件的方法或者数据&#xff0c;暴露给父组件进行使用&#xff0c;这样对组件的封装使用&#xff0c;有很大的帮助&#xff0c;那么defineExpose应该如何使用&#xff0c;下面我来用一些实际的代码&#xff0c;带大家快速学会defi…

history记录日期时间和日志记录操作

history命令能查看到操作日期和时间的配置方法&#xff1a; 1&#xff09;在/etc/profile文件中添加一行&#xff1a; export HISTTIMEFORMAT"%F %T whoami " 2&#xff09;保存后&#xff0c;执行加载命令&#xff1a; source /etc/profile 3&#xff09;然后检…

每天一个知识点——L2R

面试的时候&#xff0c;虽然做过医疗文献搜索&#xff0c;也应用过L2R的相关模型&#xff0c;但涉及到其中的一些技术细节&#xff0c;都会成为我拿不下offer永远的痛。也尝试过去理解去背下一些知识点&#xff0c;终究没有力透纸背&#xff0c;随着时间又开始变得模糊&#xf…

【网络基础】传输层

【网络基础】传输层 文章目录 【网络基础】传输层1、端口号1.1 工具 2、UDP协议2.1 协议端格式2.2 UDP特点2.3 传输数据报2.4 缓冲区2.5 基于UDP应用层协议2.6 使用注意事项 3、TCP协议3.1 协议段格式3.2 ACK机制3.3 超时重传机制3.4 连接管理机制3.5 滑动窗口3.6 流量控制3.7 …

git日常操作-案例

文章目录 查看远程有那些分支 查看远程有那些分支 git ls-remote --heads origin

并发编程之创建线程和线程的状态

创建线程的三种方式 1.继承Thread类 重写run方法 class MyThread extends Thread{Overridepublic void run() {for (int i 0; i < 100; i) {System.out.println(getName() ":打了" i "个小兵");}} } public class Test {public static void main(…

QML与C++交互

目录 1 QML获取C的变量值 2 QML获取C创建的自定义对象 3 QML发送信号绑定C端的槽 4 C端发送信号绑定qml端槽 5 C调用QML端函数 1 QML获取C的变量值 QQmlApplicationEngine engine; 全局对象 上下文属性 QQmlApplicationEngine engine; QQmlContext *context1 engine.…