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.pswp.cn/news/37195.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37195.shtml
英文地址,請注明出處:http://en.pswp.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;并一口氣發布了基于…