92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

JS筆記之快樂的數組

2021-4-9    前端達人


數組(Array)

概念:數組是一組數據的集合,其中每一個數據稱為數組元素,js的數組可以放任意數據類型的元素,數組是一種將一組數據元素存儲在單個變量名下的優雅方式。

示例解釋:

//普通變量名只能存一個數據 var num = 10 //數組存儲一組數據 var arr = [1,2,3,4,5,'a','b','c'] 
  • 1
  • 2
  • 3
  • 4

一、數組的創建

數組的創建方式:
1、通過new關鍵字創建(不常用)

//注意A要大寫 var 數組名 = new Array() var arr = new Array()//創建一個空數組 var arr = new Array(5)//創建一個長度為5的空數組 
  • 1
  • 2
  • 3
  • 4

2、通過數組字面量創建(常用)

//1、使用數組字面量創建空數組 var 數組名 = [] //2、使用數組字面量創建帶初始值的數組 var 數組名 = [元素1,元素2,元素3···] 如:var arr = [1,3,5,'a','c','e',7,9]//數組元素可以是任意數據類型的 
  • 1
  • 2
  • 3
  • 4
  • 5

小結:
1.數組是一組數據的集合,是將一組數據存放在同一變量的優雅方式
2.數組的字面量:[ ]
3.聲明數組并賦值稱為數組的初始化
4.數組中元素可以是任意類型的數據
5.注意:數組元素為字符或字符串要加引號,不加的話解釋器會認為是變量從而報錯

二、數組元素的訪問

1.通過數組索引訪問

索引(下標):用來存放數組元素的序號(數組下標從0開始)
        我們可以通過索引來訪問、設置、修改相應的元素,注意數組的長度可以不指定,它可以隨元素的增加自動擴容,當訪問未賦值的元素時,返回undefined獲取方式: 數組名[索引號]
下面通過例子來演示一下:

//定義數組 var arr = [1,3,5,'a','b','c']---->//注意字符串要加引號,不然解釋器會認為是變量而報錯 console.log(arr)---------------->Array(6)//輸出數組長度 console.log(arr[0])------------->1 console.log(arr[2])------------->5 console.log(arr[4])------------->b
 console.log(arr[6])---------- -->undefined//索引下標6沒有元素,所以返回undefined 注意:數組的下標從0開始喲?。?! 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.通過循環遍歷

請看下面代碼:

var arr = ["red","blue","green"] console.log(arr[0]) console.log(arr[1]) console.log(arr[2]) //輸出結果:red blue green 
  • 1
  • 2
  • 3
  • 4
  • 5

從上面代碼觀察發現,取出每一個元素只是數組下標改變而已,如果數組元素多的話,一行一行訪問速度很慢,為提高效率,我們可以用循環

//1、使用for循環遍歷 var arr = ["red","blue","green"] for(var i = 0;i<arr.length;i++){//length是數組的屬性,即為數組長度,沒有() console.log(arr[i]) } //輸出結果:red blue green 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
//2、使用for in循環遍歷 var arr = ["red","blue","green"] for(var i in arr){ console.log(arr[i]) } //輸出結果:red blue green 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

以上訪問數組元素的結果是一樣的,使用循環可是很便利的
下面做兩個小案例來演示下數組的魔力吧!
案例1
使用數組對一組數求和并求平均值,思路:定義2個變量,一個存總和,一個存平均數,通過遍歷數組求和,然后除以數組長度求平均數

案例1實現代碼 //使用數組對一組數求和并求平均值 var arr = [1,3,5,7,9,2,4,6,8] //聲明一個數組并初始化 var sum = 0; //創建一個變量來存取各數字之和 var avg = 0; //創建一個變量來存取平均數 for(i=0;i<arr.length;i++){ sum += arr[i]; //相當于 sum = sum + arr[i] } console.log("sum:"+sum) //打印sum的值,即所有數的和 avg = sum/arr.length //求平均值并賦值給avg(arr.lengt是數組的個數) console.log("avg:"+avg) //打印avg的值,即所有數的平均數 //輸出結果:sum:45 avg:5(這里僅是演示,沒有對結果為多位小數進行處理) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

案例2
使用數組對一組數求最大值,圖例思路:把數組第一個元素賦值給max,依次遍歷比較,如果有元素大于max,則把此元素賦值給max,遍歷后比完max即為最大值
在這里插入圖片描述

案例2實現 //使用數組對一組數求最大值 var arr = [1,3,5,7,9,2,4,6,8] //聲明一個數組并初始化 var max=arr[0]; //創建一個變量來存取最大值,把arr[0],即1賦值給max for(i=01;i<arr.length;i++){ if(arr[i]>max){ max=arr[i]//判斷是否有數組元素大于max,有的話就把大于max的值賦值給max } } console.log("max:"+max) //打印max的值,即數組中最大值 //輸出結果:max:9 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

三、數組的操作

1.數組長度及數組擴容

  1. 使用length屬性獲取數組長度
// 注意!length是屬性,不是函數,所以不用加() var arr = [1,2,3,4,5]; console.log(arr.length) //輸出結果:5 通常數組的length屬性跟數組遍歷一起使用,使用循環遍歷數組要注意
數組元素最后一位的索引下標是數組長度-1(arr.length-1) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 使用length屬性實現數組擴容
// 創建數組,通過length屬性擴容數組 var arr = ['a','b','c','d']; console.log(arr.length)//輸出結果為4,數組長度為4 console.log(arr[3]) //輸出數組最后一位元素的值為d arr.length=6; //數組長度擴容為6 console.log(arr) //輸出結果為6,數組長度為6,第四第五個元素的值為empty console.log(arr[4]) //未賦值,默認為undefined console.log(arr[5]) //未賦值,默認為undefined 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

輸出結果入圖
在這里插入圖片描述
3. 通過索引號實現數組擴容

// 創建數組,通過索引號擴容數組 var arr = ['a','b','c','d']; console.log(arr.length)//輸出結果為4,數組長度為4 console.log(arr[3]) //輸出數組最后一位元素的值為d arr[4]='A' //給第五個元素進行賦值,因為第5個元素沒被占用,所以會在數組后面追加元素 arr[5]='B' //給第六個元素進行賦值 arr[10] = 'C' //給第11個元素進行賦值 console.log(arr) console.log(arr[6]) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

運行結果如圖,可以發現,JS數組可以直接通過索引號進行擴容,而未賦值的元素默認為empty,返回結果是undefined,如果元素不存在,則在數組后面追加元素,若已經存在,則替換數組元素–>arr[3]

在這里插入圖片描述

注意:不要直接給數組名賦值,否則會覆蓋原有數組!

// 演示 var arr=[1,2,3,4,5] console.log(arr)//打印原數組 arr="有點意思!" console.log(arr) 
  • 1
  • 2
  • 3
  • 4
  • 5

在這里插入圖片描述


2.數組的常用方法

 1. shift()刪除數組中的第一個元素并且返回被刪除的元素,
    同時其他元素的索引向前移動一位 
  • 1
  • 2
var fruits = ['banana', 'orange', 'apple', 'mango'] console.log(fruits) //打印原數組 var x = fruits.shift(); //首元素刪除 console.log(fruits) //刪除后的數組,數組元素向前索引移動一位 console.log(x) //打印被刪除元素的值banana 
  • 1
  • 2
  • 3
  • 4
  • 5

結果如圖:
在這里插入圖片描述

 2. pop()刪除數組中的最后一個元素并且返回被刪除的元素 
  • 1
var fruits = ['banana', 'orange', 'apple', 'mango'] console.log(fruits) //打印原數組 var x = fruits.pop(); //末尾元素刪除 console.log(fruits) //刪除后的數組 console.log(x) //打印被刪除元素的值mango 
  • 1
  • 2
  • 3
  • 4
  • 5

結果如圖:
在這里插入圖片描述

 3. unshift(參數1,參數2···)向數組的開頭添加一個或者更多的元素并且返回新的長度,
    同時數組元素的索引向后移動 
  • 1
  • 2
var fruits = ['orange', 'apple', 'mango'] console.log(fruits) //打印原數組 var x = fruits.unshift('banana'); //添加后返回數組長度 console.log(fruits) //添加后的數組 console.log(x) //打印新數組的總長度 
  • 1
  • 2
  • 3
  • 4
  • 5

結果如圖:
在這里插入圖片描述

 4. push()向數組末尾增添一個或者多個數組元素,并且返回數組的長度 
  • 1
var fruits = ['orange', 'apple', 'mango'] console.log(fruits) //打印原數組 var x = fruits.push('banana'); //添加一個數后返回數組長度 console.log(fruits) //添加一個元素后的數組 console.log(x) //打印添加一個數后新數組的總長度 var x = fruits.push('pineapple','strawberry');//添加多個元素后返回數組長度 console.log(fruits) //添加多個元素后的數組 console.log(x) //添加多個元素后的總長度 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

結果如圖
在這里插入圖片描述

 5. reverse()翻轉數組 
  • 1
 var fruits = ['orange', 'apple', 'mango'] console.log(fruits); //打印原數組 console.log(fruits.reverse()) //打印翻轉后的數組 
  • 1
  • 2
  • 3

結果如圖:
在這里插入圖片描述
6. sort()數組排序,對字符串排序,比較的是ASCII碼的順序

 1>如["a", "A", "1"], 按ASCII碼順序排列后為["1", "A", "a"](數字>大寫字母>小寫字母)
 2>如["ab", "ac", "abc"], 排序后為["ab", "abc", "ac"]
 3>字符串數字:如["10", "5", "18" , "50"], 排序后為["10", "18", "5", "50"]
 比較方法:
(第一位相同比較第二位,b>c,因此ab和abc在ac之前;再比較ab與abc, ab沒有第三位,因此排在abc之前)!!!

如需要對字符串形式的數字進行排序,可以采用以下兩種方式:
    1、統一格式,補足位數,如["10", "5", "18" , "50"]中, 將"5"寫為"05"
    2、轉換為數字,使用特殊方法對數字排序 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
 var arr1 = ["a", "A", "1"] var arr2 = ["ab", "ac", "abc"] var arr3 = ["10", "5", "18", "50"] var arr4 = ["10", "05", "18", "50"] console.log(arr1.sort()); console.log(arr2.sort()); //比較方法:按ASCII碼比較排序  console.log(arr3.sort()); console.log("數字排序(5改成'05'):" + arr4.sort()); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

結果如圖:
在這里插入圖片描述

3.拓展:數字排序

1、匿名函數當做參數使用數組排序(一維數組)

//語法格式:
arr.sort ( function (a, b) {   //arr為需要排序的數組名
    return a - b               //升序
})  
根據比較函數返回值正負來決定排列順序,為正升序,為負降序
使用如下: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
 function sortby(a, b) { return a - b //升序 } //降序就改成return b-a var arr = [10, 5, 8, 50]; arr.sort(sortby)//把排序匿名函數當做參數進行調用 console.log(arr);//輸出排序后的結果 //匿名函數的函數名任意 結果如圖: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在這里插入圖片描述

2、匿名函數當做參數使用數組排序(二維數組)

//語法格式:
arr.sort (function (a, b) {   //arr為需要排序的數組名
    return a[1] - b [1]      //升序,降序改為b[1]-a[1]
})  
使用如下: 
  • 1
  • 2
  • 3
  • 4
  • 5
 function sortby(a, b) { return a[1] - b[1] //升序 } //降序就改成return b-a var arr = [["Alice", "95"], ["Bob", "80"], ["Cart", "100"]] arr.sort(sortby)//把排序匿名函數當做參數進行調用 console.log(arr);//輸出排序后的結果 //匿名函數的函數名任意 結果如圖: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在這里插入圖片描述

3.拓展:數組篩選(巧用length屬性)

將數組[2,4,5,6,8,9,12,15,3,7,26,14]中大于10的元素存入新數組
//分析:
    1、創建一個數組arr=[2,4,5,6,8,9,12,15,3,7,26,14]
    2、創建一個新數組newArr來存放大于10的元素
    3、遍歷舊數組,找出大于10的元素
    4、依次添加到新數組中 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
// 方法1,通過變量來增加數組長度 var arr = [2,4,5,6,8,9,12,15,3,7,26,14] //創建一個數組 var newArr=[] //創建空的新數組,用于存放大于10的元素 var j =0 ; //定義變量,用于增加新數組的長度 for(var i = 0 ;i<arr.length;i++){ //for循環遍歷數組 if(arr[i]>10){ //判斷數組元素是否大于10 newArr[j]=arr[i] //如果arr數組元素>10,則存入新數組 j++; //當存入元素,長度+1,即j++ } } console.log(newArr)//打印新數組 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
// 方法2,巧用length屬性 var arr = [2,4,5,6,8,9,12,15,3,7,26,14] //創建一個數組 var newArr=[] //創建空的新數組,用于存放大于10的元素 for(var i = 0 ;i<arr.length;i++){ //for循環遍歷數組 if(arr[i]>10){ //判斷數組元素是否大于10 newArr[newArr.length]=arr[i]//如果arr數組元素>10,則存入新數組 } //巧用length屬性,數組索引從0開始增加 } console.log(newArr)//打印新數組 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

結果如圖:
在這里插入圖片描述

四、二維數組

概念:二維數組就是一維數組的每個元素是一個一維數組

1.二維數組的創建與訪問

// 創建與訪問 
  • 1
var fruits = [["1", "Banana"], ["2", "Orange"]];//創建二維數組 var element = ["3", "Apple"]; fruits[2] = element; //給第三個元素賦值 console.log(fruits); //打印二維數組 console.log(fruits[0]); // ["1", "Banana"]//打印第一個元素(數組) console.log(fruits[0][1]); // "Banana"   //打印第一個元素的第2個值 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

結果如圖:
在這里插入圖片描述

2.遍歷二維數組

通過for in循環遍歷二維數組

var fruits = [["1", "Banana"], ["2", "Orange"], ["3", "Apple"]]; for (var i in fruits) {//控制外層數組元素 for (var j in fruits[i]) {//控制內層數組元素 console.log(fruits[i][j]);//輸出數值中每一個元素 } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

結果如圖:
在這里插入圖片描述
小結:二維數組跟一維數組使用差不多,只是稍微麻煩一點,訪問二維數組的具體元素值:arr[外層數組索引][內層數組索引]
遍歷二維數組使用雙重for循環

3.使用二維數組進行排序(冒泡排序法)

圖例解釋:
在這里插入圖片描述

//代碼實現如下 var arr = [5,4,3,2,1]; for (var i = 0; i < arr.length - 1; i++) {//外層循環控制交換趟數,趟數為數組長度-1 for (var j = 0; j < arr.length - 1 - i; j++) {//內層循環控制每一趟需要交換的次數 if (arr[j] > arr[j + 1]) {//判斷前面一個數是否大于后面一個數,如果是則交換兩數 var temp = arr[j];//臨時變量,用于交換兩數的臨時存取 arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } console.log(arr);//輸出排序后的結果 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

結果如圖:
在這里插入圖片描述

總結

本次筆記主要記錄了數組的基本使用,但是數組的妙用遠不止這些,需要我們自己去探索。


轉自:csdn論壇 作者:想要搞錢

藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服


日歷

鏈接

個人資料

藍藍設計的小編 http://www.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
日韩欧美亚洲综合| 亚洲精品白浆高清久久久久久| 精品亚洲aⅴ在线观看| 国产精品久久久久不卡| 精品爽片免费看久久| 日韩免费av在线| 国产一区私人高清影院| 精品成人69xx.xyz| 日韩二区三区在线| 高潮白浆女日韩av免费看| 亚洲石原莉奈一区二区在线观看| 97久久精品人人澡人人爽缅北| 亚洲国产一区二区三区四区| 国产www精品| 国产成+人+综合+亚洲欧美丁香花| 欧洲美女免费图片一区| 欧美高清视频在线播放| 亚洲成人在线视频播放| 亚洲欧洲日产国码av系列天堂| 成人在线激情视频| 亚洲免费影视第一页| 91av视频在线播放| 人人爽久久涩噜噜噜网站| 日本久久中文字幕| 亚洲欧美精品一区| 日韩精品视频免费专区在线播放| 久久影视免费观看| 亚洲性夜色噜噜噜7777| 国产亚洲人成a一在线v站| 一区二区福利视频| 亚洲自拍偷拍第一页| 欧美国产极速在线| 国产亚洲人成a一在线v站| 亚洲国产中文字幕在线观看| 动漫精品一区二区| 伊人久久大香线蕉av一区二区| 日韩毛片在线看| 亚洲久久久久久久久久久| 国产欧美婷婷中文| 日韩精品日韩在线观看| 成人97在线观看视频| 亚洲欧洲中文天堂| 7777kkkk成人观看| 成人免费看黄网站| 亚洲欧美另类在线观看| 在线播放国产一区二区三区| 91色精品视频在线| 国产精品视频专区| 成人网中文字幕| 欧美视频在线观看 亚洲欧| 欧美日韩亚洲一区二| 欧美视频中文在线看| 日韩欧美在线字幕| 91中文字幕一区| 国产精欧美一区二区三区| 日韩在线视频网站| 97视频免费在线看| 久久亚洲春色中文字幕| 茄子视频成人在线| 亚洲最大成人网色| 国产精品日韩久久久久| 精品日韩中文字幕| 国产成人啪精品视频免费网| 91久久精品美女高潮| 久久精品99国产精品酒店日本| 欧美视频在线免费看| 国产精品video| 成人免费看黄网站| 色哟哟网站入口亚洲精品| 色偷偷综合社区| 国产精品国产自产拍高清av水多| 精品国产户外野外| 欧美成人精品h版在线观看| 久久综合88中文色鬼| 欧美人在线观看| 国产精品第2页| 一本色道久久综合狠狠躁篇的优点| 亚洲人成网7777777国产| 色青青草原桃花久久综合| 97精品一区二区视频在线观看| 欧美床上激情在线观看| 精品久久久久久久久久国产| 亚洲电影天堂av| 欧美日韩性生活视频| 久久精品99久久久香蕉| 麻豆一区二区在线观看| 91在线色戒在线| 国产精品久久久av久久久| 欧美精品激情在线观看| 国产精品旅馆在线| 亚洲欧美国产精品va在线观看| 69视频在线播放| 日韩电影中文字幕av| 欧美最猛性xxxxx(亚洲精品)| 日韩大胆人体377p| 国产精品久久久久久av福利软件| 国产精品女主播| 97在线视频一区| 欧美激情视频在线| 精品呦交小u女在线| 亚洲欧美激情精品一区二区| 日韩精品中文字幕久久臀| 91高清免费在线观看| 亚洲第一天堂无码专区| 高潮白浆女日韩av免费看| 成人写真视频福利网| 国产日韩精品综合网站| 亚洲精品按摩视频| 亚洲精品视频在线播放| 国产亚洲精品久久久久久| 国产欧美日韩中文字幕| 国产精品私拍pans大尺度在线| 国产成人久久精品| 欧美在线中文字幕| 欧美午夜视频在线观看| 亚洲精品小视频| 主播福利视频一区| 日韩免费观看高清| 欧美精品第一页在线播放| 成人免费网视频| 亚洲午夜激情免费视频| 亚洲第一网站免费视频| 久久国产加勒比精品无码| 国产视频久久久久久久| 亚洲成色777777女色窝| 亚洲女同性videos| 国产xxx69麻豆国语对白| 欧美另类极品videosbestfree| 亚洲在线第一页| 国产国语videosex另类| 亚洲国产精品成人一区二区| 亚洲自拍另类欧美丝袜| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲日韩中文字幕| 日韩中文字幕不卡视频| 午夜精品久久久久久99热| 亚洲大胆人体av| 久久国内精品一国内精品| 亚洲欧美精品suv| 日韩精品中文字幕久久臀| 91美女片黄在线观| 久久久午夜视频| 国产精品视频99| 亚洲福利视频在线| 97香蕉久久超级碰碰高清版| 国产精品人人做人人爽| 日韩精品中文字幕在线观看| 成人国产精品免费视频| 777国产偷窥盗摄精品视频| 欧美日韩综合视频| 欧美视频裸体精品| 欧美极品美女电影一区| 国产精品自在线| 亚洲精品视频久久| 亚洲美腿欧美激情另类| 日韩欧美精品网站| 亚洲女人天堂色在线7777| 日韩精品欧美激情| 亚洲精品网站在线播放gif| 欧美性猛交xxx| 国产91久久婷婷一区二区| 成人女保姆的销魂服务| 日韩在线免费观看视频| 欧美成aaa人片免费看|