昨日複習
- 結束當前次循環的關鍵詞是 continue
- 結束當前循環的關鍵詞是 break
- JS的循環有 for 與 while 與 do-while
- 數組的長度通過 length 屬性獲取
- 數組的索引值從 0 開始
- 數組元素的最大索引值是 arr.length - 1
01 - 數組的使用
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>01-數組的使用</title>
<!--
1. 數組的概念
============
問:之前學習的數據類型,只能存儲一個值。如果我們想存儲班級中所有學生的姓名,那麼該如何存儲呢?
答:可以使用數組(Array)。數組可以把一組相關的數據一起存放,並提供方便的訪問(獲取)方式。
問:什麼是數組呢?
答:數組是指 一組數據的集合 ,其中的每個數據被稱作 元素 ,在數組中可以 存放任意類型的元素 。
數組是一種將 一組數據存儲在單個變量名下 的優雅方式。
```JavaScript
// 普通變量一次只能存儲一個值
var num = 10;
// 數組一次可以存儲多個值
var arr = [1,2,3,4,5];
```
2. 創建數組
===========
2.1 數組的創建方式
-----------------
JS 中創建數組有兩種方式:
- 利用 new 創建數組
- 利用數組字面量創建數組
2.2 利用new創建數組
-------------------
```JavaScript
var 數組名 = new Array() ;
var arr = new Array(); // 創建一個新的空數組
```
- 這種方式暫且瞭解,等學完對象再看
- 注意 Array () ,A 要大寫
2.3 利用數組字面量創建數組
------------------------
```JavaScript
//1. 使用數組字面量方式創建空的數組
var 數組名 = [];
//2. 使用數組字面量方式創建帶初始值的數組
var 數組名 = ['小白','小黑','大黃','瑞奇'];
```
- 數組的字面量是方括號[]
- 聲明數組並賦值稱爲數組的初始化
- 這種字面量方式也是我們以後 最多使用的方式
2.4 數組元素的類型
-----------------
數組中可以存放 任意類型 的數據,例如字符串,數字,布爾值等。
```JavaScript
var arrStus = ['小白',12,true,28.9];
```
知識總結
--------
1. 數組的作用是什麼?
數組:一組數據的集合,使用一個變量同時存儲多個數據
2. 創建數組我們有哪兩種方式? 哪一種我們最常用?
創建數組的方式:
```JavaScript
var arr = new Array()
var arr = [ 1,2,'demo'];
```
3. 什麼是數組元素? 數組裏面類型有限制嗎?
數組中的數據成爲數組的元素,元素的數據類型沒有限制
3. 獲取數組元素
==============
3.1 數組的索引
-------------
索引 (下標) :用來訪問數組元素的序號(數組下標從 0 開始)。
var arr = ['小白','小黑','大黃','瑞奇'];
索引號: 0 1 2 3
數組可以通過 索引 來訪問、設置、修改對應的數組元素,我們可以通過 "數組名[索引]" 的形式來獲取數組中的元素。
這裏的 訪問 就是獲取得到的意思
```JavaScript
// 定義數組
var arrStus = [1,2,3];
// 獲取數組中的第2個元素
alert(arrStus[1]); // 2
```
知識總結
-------
1. 如何把數組中的元素取出來?
數組中的每個元素都有編號,編號默認從0開始,稱爲"索引","下標"
從數組中取出來指定元素:利用數組的索引值取元素
2. 如果獲取數組中不存在的元素時,獲取到的值是什麼?
如果通過索引值獲取數組中沒有的元素,得到的值是undefined
課堂練習:數組練習
----------------
定義一個數組,裏面存放星期一、星期二…… 直到星期日(共7天),在控制檯輸出:星期日
-->
<script>
var arr = new Array();
var arr = [];
var arr1 = [1, 2, 'pink老師', true];
console.log(arr1);
console.log(arr1[2]);
console.log(arr1[3]);
var arr2 = ['迪麗熱巴', '古麗扎娜', '佟麗丫丫'];
console.log(arr2[0]);
console.log(arr2[1]);
console.log(arr2[2]);
console.log(arr2[3]);
var week = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日'];
console.log(week[6]);
</script>
</head>
<body>
</body>
</html>
02 - 遍歷數組
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>02-遍歷數組</title>
<!--
4. 遍歷數組
==========
問:數組中的每一項我們怎麼取出來?
答:可以通過 "數組名[索引號]" 的方式一項項的取出來。
```JavaScript
var arr = ['red','green', 'blue'];
console.log(arr[0]) // red
console.log(arr[1]) // green
console.log(arr[2]) // blue
```
問:怎麼把數組裏面的元素全部取出來?
規律: 從代碼中我們可以發現,從數組中取出每一個元素時,代碼是重複的,有所不一樣的是 索引值在遞增
答案就是 循環
遍歷: 就是把數組中的每個元素從頭到尾都訪問一次(類似我們每天早上學生的點名)。
我們可以通過 for 循環索引遍歷數組中的每一項
```JavaScript
var arr = ['red','green', 'blue'];
for(var i = 0; i < arr.length; i++){
console.log(arrStus[i]);
}
```
知識總結
-------
1. 什麼是遍歷?
遍歷:把數據的集合中的數據逐個訪問,稱爲遍歷
2. 如何遍歷數組?
遍歷數組:通過循環過程中的計數器變量,把數組中的元素從頭到尾訪問一遍,稱爲遍歷數組
遍歷數組的寫法:
for( var i = 0;i < 數組的長度; i++ ){
arr[ i ] ;
}
-->
<script>
var arr = ['red', 'green', 'blue'];
for (var i = 0; i < 3; i++) {
console.log(arr[i]);
}
</script>
</head>
<body>
</body>
</html>
03 - 數組長度
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>03-數組長度</title>
<!--
4.1 數組的長度
-------------
使用 "數組名.length" 可以訪問數組元素的數量(數組長度)。
```JavaScript
var arrStus = [1,2,3];
alert(arrStus.length); // 3
```
注意:
1. 此處數組的長度是 數組元素的個數 ,不要和數組的 索引號 混淆。
2. 當我們數組裏面的元素個數發生了變化,這個 length 屬性跟着一起變化。
課堂案例1:遍歷數組
-----------------
請將 [“關羽”,“張飛”,“馬超”,“趙雲”,“黃忠”,“劉備”,“姜維”]; 數組裏的元素依次打印到控制檯。
1. 什麼是遍歷?
2. 我們通過什麼來遍歷數組裏面的元素?
3. for裏面的 i 是什麼?當什麼使用? for裏面的數組元素怎麼寫?
i是計數器,當索引號使用, arr[i] 是數組元素 第i個數組元素
4. 怎麼獲取數組的長度?
5. 數組索引號和數組長度有什麼關係? 索引號從0開始,數組長度是 元素個數
-->
<script>
var arr = ['關羽', '張飛', '馬超', '趙雲', '黃忠', '劉備', '姜維', 'pink'];
for (var i = 0; i < 7; i++) {
console.log(arr[i]);
}
console.log(arr.length);
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
</script>
</head>
<body>
</body>
</html>
04 - 計算數組的和以及平均值
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>04-計算數組的和以及平均值</title>
<!--
課堂案例 2:數組求和及平均值
--------------------------
求數組 [2,6,1,7, 4] 裏面所有元素的和以及平均值。
案例分析
--------
(1)聲明一個求和變量 sum。
(2)遍歷這個數組,把裏面每個數組元素加到 sum 裏面。
(3)用求和變量 sum 除以數組的長度就可以得到數組的平均值。
-->
<script>
var arr = [2, 6, 1, 7, 4];
var sum = 0;
var average = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
average = sum / arr.length;
console.log(sum, average);
</script>
</head>
<body>
</body>
</html>
05 - 求數組中的最大值
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>05-求數組中的最大值</title>
<!--
課堂案例3:數組最大值
--------------------
求數組[2,6,1,77,52,25,7]中的最大值。
案例分析
--------
1. 聲明一個保存最大元素的變量 max。
2. 默認最大值可以取數組中的第一個元素。
3. 遍歷這個數組,把裏面每個數組元素和 max 相比較。
4. 如果這個數組元素大於max 就把這個數組元素存到 max 裏面,否則繼續下一輪比較。
5. 最後輸出這個 max。
-->
<script>
var arr = [2, 6, 1, 77, 52, 25, 7, 99];
var max = arr[0];
for (var i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
console.log('該數組裏面的最大值是:' + max);
</script>
</head>
<body>
</body>
</html>
06 - 數組轉換爲字符串
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>06-數組轉換爲字符串</title>
<!--
課堂案例4:數組轉換爲字符串
-------------------------
要求:將數組 ['red', 'green', 'blue', 'pink'] 轉換爲字符串,並且用 | 或其他符號分割
輸出: 'red|green|blue|pink'
案例分析
-------
1.需要一個新變量用於存放轉換完的字符串 str。
2.遍歷原來的數組,分別把裏面數據取出來,加到字符串裏面。
3.同時在後面多加一個分隔符
-->
<script>
var arr = ['red', 'green', 'blue', 'pink'];
var str = '';
var sep = '*';
for (var i = 0; i < arr.length; i++) {
str += arr[i] + sep;
}
console.log(str);
</script>
</head>
<body>
</body>
</html>
07 - 新增數組元素
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>07-新增數組元素</title>
<!--
5. 數組中新增元素
================
5.1 通過修改length長度新增數組元素
--------------------------------
- 可以通過修改 length 長度來實現數組擴容的目的
- length 屬性是可讀寫的
```JavaScript
var arr = ['red', 'green', 'blue', 'pink'];
arr.length = 7;
console.log(arr); // Array(7) [ "red", "green", "blue", "pink", <3 empty slots> ]
console.log(arr[4]); // undefined
console.log(arr[5]); // undefined
console.log(arr[6]); // undefined
```
其中索引號是 4,5,6 的空間沒有給值,就是聲明變量未給值,默認值就是 undefined。
5.2 通過修改數組索引新增數組元素
------------------------------
- 可以通過修改數組索引的方式追加數組元素
- 不能直接給數組名賦值,否則會覆蓋掉以前的數據
```JavaScript
var arr = ['red', 'green', 'blue', 'pink'];
arr[4] = 'hotpink';
console.log(arr);
```
這種方式也是我們最常用的一種方式。
知識總結
--------
- 修改數組的length:
- 如果設置的length的值大於原來的數組長度,則會在數組最後留下空白位置
- 如果設置的length的值小於原來的數組長度,則會讓數組丟失後面的元素
- 增加數組元素:
- 通過“數組[索引值] = 數據 ”來設置數組的元素
- 如果索引值是已經存在的元素的索引值,則會把之前的元素的值覆蓋掉
- 如果索引值是尚未出現的索引值,則會增加一個元素,且如果不與數組之前的最後一個元素的索引值相連的話,
會形成空白位置
-->
<script>
var arr = ['red', 'green', 'blue'];
console.log(arr.length);
arr.length = 5;
console.log(arr);
console.log(arr[3]);
console.log(arr[4]);
var arr1 = ['red', 'green', 'blue'];
arr1[3] = 'pink';
console.log(arr1);
arr1[4] = 'hotpink';
console.log(arr1);
arr1[0] = 'yellow';
console.log(arr1);
arr1 = '有點意思';
console.log(arr1);
</script>
</head>
<body>
</body>
</html>
08 - 數組存放1~10個值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>08-數組存放1~10個值</title>
<!--
課堂案例1:數組新增元素
---------------------
新建一個數組,裏面存放10個整數( 1~10),要求使用循環追加的方式輸出: [1,2,3,4,5,6,7,8,9,10]
案例分析
-------
核心原理:使用循環來追加數組。
1、聲明一個空數組 arr。
2、循環中的計數器 i 可以作爲數組元素存入。
3、由於數組的索引號是從0開始的, 因此計數器從 0 開始更合適,存入的數組元素要+1。
-->
<script>
var arr = [];
for (var i = 0; i < 100; i++) {
arr[i] = i + 1;
}
console.log(arr);
</script>
</head>
<body>
</body>
</html>
09 - 篩選數組
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>09-篩選數組</title>
<!--
課堂案例2:篩選數組
-----------------
要求:將數組 [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 中大於等於 10 的元素選出來,放入新數組。
案例分析
-------
1、聲明一個新的數組用於存放新數據newArr。
2、遍歷原來的舊數組, 找出大於等於 10 的元素。
3、依次追加給新數組 newArr。
-->
<script>
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
var j = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] >= 10) {
newArr[j] = arr[i];
j++;
}
}
console.log(newArr);
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] >= 10) {
newArr[newArr.length] = arr[i];
}
}
console.log(newArr);
</script>
</head>
<body>
</body>
</html>
10 - 數組去重(刪除指定數組元素)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>10-數組去重(刪除指定數組元素)</title>
<!--
課堂案例1:刪除指定數組元素
-------------------------
要求:將數組[2, 0, 6, 1, 77, 0, 52, 0, 25, 7]中的 0 去掉後,形成一個不包含 0 的新數組。
案例分析
-------
1、需要一個新數組用於存放篩選之後的數據。
2、遍歷原來的數組, 把不是 0 的數據添加到新數組裏面(此時要注意採用數組名 + 索引的格式接收數據)。
3、新數組裏面的個數, 用 length 不斷累加。
-->
<script>
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
newArr[newArr.length] = arr[i];
}
}
console.log(newArr);
</script>
</head>
<body>
</body>
</html>
11 - 翻轉數組
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>11-翻轉數組</title>
<!--
課堂案例2:反轉數組
------------------
要求:將數組 ['red', 'green', 'blue', 'pink', 'purple'] 的內容反過來存放。
輸出: ['purple', 'pink', 'blue', 'green', 'red']
案例分析
-------
1、聲明一個新數組 newArr
2、把舊數組索引號第4個取過來(arr.length - 1),給新數組索引號第0個元素 (newArr.length)
3、我們採取 遞減的方式 i--
-->
<script>
var arr = ['red', 'green', 'blue', 'pink', 'purple', 'hotpink'];
var newArr = [];
for (var i = arr.length - 1; i >= 0; i--) {
newArr[newArr.length] = arr[i]
}
console.log(newArr);
</script>
</head>
<body>
</body>
</html>
12 - 複習交換兩個變量
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>12-複習交換兩個變量</title>
<!--
課堂案例3:數組排序(冒泡排序)
----------------------------
我們先複習下如何把2個變量交換數據
```JavaScript
// 利用第三個變量
var num1 = 10;
var num2 = 20;
var temp = num1;
num1 = num2;
num2 = temp;
console.log(num1, num2);
```
-->
<script>
var num1 = 'pink';
var num2 = 'yellow';
var temp;
temp = num1;
num1 = num2;
num2 = temp;
console.log(num1, num2);
</script>
</head>
<body>
</body>
</html>
13 - 冒泡排序
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>13-冒泡排序</title>
<!--
課堂案例3:數組排序(冒泡排序)
----------------------------
冒泡排序:是一種算法,把一系列的數據按照一定的順序進行排列顯示(從小到大或從大到小)。
例如,我們可以將數組 [5, 4, 3, 2, 1]中的元素按照從小到大的順序排序,輸出: 1,2,3,4,5
案例分析
-------
1. 一共需要的趟數 我們用外層for循環
2. 每一趟交換次數 我們用裏層for循環
3. 交換2個變量就好了
-->
<script>
var arr = [4, 1, 2, 3, 5];
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
</script>
</head>
<body>
</body>
</html>