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 = 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]+'
') } document.write('
')

2.for-in循环

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

3.forEach函数

/*
  Es6 中推荐使用 数组的方法,forEach()
  它里面传入的是一个函数,该函数具有一个形参 item , item 就是当前循环的数组元素
  */

 arr4.forEach(function(item){
    document.write(item+'
') })

 案例

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

整体思路

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

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

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

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

代码讲解




    
    
    猜数字


    

A

B

B的手指数: B说的数:

        这部分是HTML代码,它定义了一个简单的页面结构。包括一个标题(</code>),两个文本输入框(<code><input></code>),两个下拉列表(<code><select></code>),一个按钮(<code><button></code>)。用户可通过输入文本框和选择下拉列表来参与猜数字游戏。</p> <pre><code class="language-javascript"><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> </code></pre> <p>这部分是JavaScript代码,它实现了猜数字游戏的逻辑。让我们逐行解释它:</p> <ul> <li><code>let arr1 = [0,5,10]</code>:定义了数组<code>arr1</code>,其中包含了A可能选择的手指数。</li> <li><code>let arr2 = [0,5,10,15,20]</code>:定义了数组<code>arr2</code>,其中包含了A可能说的数。</li> <li><code>let aa = document.getElementById('aa')</code>:获取ID为<code>aa</code>的元素,即A的手指数输入框。</li> <li><code>let bb = document.getElementById('bb')</code>:获取ID为<code>bb</code>的元素,即A说的数输入框。</li> <li><code>let cc = document.getElementById('cc')</code>:获取ID为<code>cc</code>的元素,即B的手指数下拉列表。</li> <li><code>let dd = document.getElementById('dd')</code>:获取ID为<code>dd</code>的元素,即B说的数下拉列表。</li> <li><code>let btn = document.getElementById('btn')</code>:获取ID为<code>btn</code>的元素,即"Come On!"按钮。</li> </ul> <p>接下来是按钮的点击事件处理函数:</p> <ul> <li><code>btn.onclick = function(){...}</code>:当按钮被点击时执行该函数。</li> <li><code>let sj1 = Math.floor(Math.random()*3)</code>:生成一个0到2之间的随机整数,用于确定A的实际手指数。</li> <li><code>let sj2 = Math.floor(Math.random()*(5-sj1)+sj1)</code>:生成一个在sj1和4之间的随机整数,用于确定A实际说的数。</li> <li><code>let c = cc.value-0</code>:获取B的手指数下拉列表选中的值,并转换为数字类型。</li> <li><code>let d = dd.value-0</code>:获取B说的数下拉列表选中的值,并转换为数字类型。</li> <li><code>aa.value = arr1[sj1]</code>:将A的手指数输入框的值设置为arr1中根据sj1确定的手指数。</li> <li><code>bb.value = arr2[sj2]</code>:将A说的数输入框的值设置为arr2中根据sj2确定的数。</li> <li><code>let a = aa.value-0</code>:将A的手指数转换为数字类型。</li> <li><code>let b = bb.value -0</code>:将A说的数转换为数字类型。</li> </ul> <p>        根据A和B的手指数、说的数以及B的手指数与说的数之间的逻辑关系,进行对应的比较和判断,然后弹出相应的提示框。</p> <ul> <li><code>if (a+c==d&&a+c!=b)</code>:如果A的手指数加上B的手指数等于B说的数,并且不等于A说的数,则弹出提示框显示"B赢"。</li> <li><code>else if(a+c==b&&a+c!=d)</code>:如果A的手指数加上B的手指数等于A说的数,并且不等于B说的数,则弹出提示框显示"A赢"。</li> <li><code>else</code>:其他情况下,即A和B说的数不一致或与手指数之和不符,则弹出提示框显示"平"。</li> </ul> <h2 id="2.%E9%9A%8F%E6%9C%BA%E7%94%9F%E6%88%9020%E4%B8%AA100-200%E7%9A%84%E6%95%B4%E6%95%B0%EF%BC%8C%E8%BE%93%E5%87%BA%E6%9C%80%E5%A4%A7%E7%9A%84%E9%82%A3%E4%B8%AA%E6%95%B4%E6%95%B0%E5%8F%8A%E5%85%B6%E4%BD%8D%E7%BD%AE%C2%A0" style="background-color:transparent;">2.随机生成20个100-200的整数,输出最大的那个整数及其位置 </h2> <h3>整体思路</h3> <blockquote> <ol> <li> <p>创建一个长度为20的数组 <code>arr</code>,用来存储随机生成的整数。</p> </li> <li> <p>初始化 <code>max</code> 变量为0,用来记录最大的整数。</p> </li> <li> <p>初始化 <code>y</code> 变量为0,用来记录最大整数的位置。</p> </li> <li> <p>使用 <code>for</code> 循环来生成20个随机整数,并将这些整数存储在数组 <code>arr</code> 中。</p> </li> <li> <p>在生成过程中,使用内部的 <code>for...in</code> 循环来遍历数组 <code>arr</code>,并比较每个元素与当前的最大值 <code>max</code>。如果某个元素大于或等于 <code>max</code>,则更新 <code>max</code> 的值为该元素,并记录其位置到 <code>y</code> 变量中。</p> </li> <li> <p>循环结束后,对 <code>y</code> 值进行修正(加1),因为数组的索引是从0开始的,而位置是从1开始计数。</p> </li> <li> <p>最后,使用 <code>document.write()</code> 方法输出最大的整数和它的位置到网页中。</p> </li> </ol> </blockquote> <h3 id="%E4%BB%A3%E7%A0%81%E8%AE%B2%E8%A7%A3%C2%A0">代码讲解 (代码较长)</h3> <pre><code class="language-javascript">//随机生成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 + '位'); // 在网页中输出最大整数的位置 代码解释: </code></pre> <blockquote> <p>       首先,声明了一个长度为20的数组arr,用于存储随机生成的整数。<br>        接着,通过一个循环生成20个100到200之间的随机整数,并将它们赋值给数组arr的每个元素,并在控制台打印出来。<br>        然后,通过嵌套的for...in循环遍历数组arr,寻找最大的整数及其位置。如果当前元素大于或等于最大值max,则更新最大值和位置。<br>        最后,将位置加1,以符合人类的计数习惯,然后使用document.write()在网页中输出最大的整数和它的位置。</p> </blockquote> <h3 id="%E5%AE%8C%E6%95%B4%E4%BB%A3%E7%A0%81%C2%A0">完整代码 (优化后)</h3> <pre><code class="language-html"><!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document

你可能感兴趣的:(javascript,算法,数据结构)