JavaScript數(shù)組
專門用于存儲一組數(shù)據(jù)的,不是基本數(shù)據(jù)類型,是引用數(shù)據(jù)類型(對象類型)
-
創(chuàng)建數(shù)組
let 變量名稱 = new Array(size);
-
操作數(shù)據(jù)
往數(shù)組中存儲數(shù)據(jù): 變量名稱[索引號] = 需要存儲的數(shù)據(jù); 從數(shù)組中獲取存儲的數(shù)據(jù): 變量名稱[索引號];
-
數(shù)組注意點
- 和其它編程語言不同,如果數(shù)組對應(yīng)的索引沒有存儲數(shù)據(jù),默認(rèn)存儲的就是undefined,其他編程語言中默認(rèn)保存的是垃圾數(shù)據(jù)或者0
- 和其它編程語言不同,JavaScript中訪問了數(shù)組中不存在的索引不會報錯,會返回undefined,其他編程語言一旦超出范圍就會報錯或者返回臟數(shù)據(jù)
- 和其他編程語言不同,當(dāng)JavaScript中數(shù)組的存儲空間不夠時數(shù)組會自動擴(kuò)容,其他編程語言中數(shù)組的大小是固定的
- 和其它編程語言不同,JavaScript的數(shù)組可以存儲不同類型數(shù)據(jù),其他編程語言中數(shù)組只能存儲相同類型數(shù)據(jù)
- 和其它編程語言不同,JavaScript中數(shù)組分配的存儲空間不一定是連續(xù)的,其他編程語言數(shù)組分配的存儲空間都是連續(xù),JavaScript數(shù)組采用"哈希映射"方式分配存儲空間(好比字典可以通過偏旁部首找到對應(yīng)漢字,我們可以通過索引找到對應(yīng)空間)
- 在瀏覽器中各大瀏覽器也對數(shù)組分配存儲空間進(jìn)行了優(yōu)化
- 如果存儲的都是相同類型的數(shù)據(jù),那么會盡量分配連續(xù)的存儲空間
-
創(chuàng)建數(shù)組的其他方式
通過構(gòu)造函數(shù)創(chuàng)建數(shù)組 let 變量名稱 = new Array(size);創(chuàng)建一個指定大小數(shù)組 let 變量名稱 = new Array();創(chuàng)建一個空數(shù)組 let 變量名稱 = new Array(data1,data2,...);創(chuàng)建一個帶數(shù)據(jù)的數(shù)組 通過字面量創(chuàng)建數(shù)組 let 變量名稱 = [];創(chuàng)建一個空數(shù)組 let 變量名稱 = [data1,data2,...];創(chuàng)建一個帶數(shù)據(jù)的數(shù)組
數(shù)組遍歷
-
數(shù)組的遍歷就是依次取出數(shù)組中存儲的所有數(shù)據(jù),我們就稱之為數(shù)組的遍歷
for(let i = 0;i < arr.length;i++){ console.log(arr[i]); }
數(shù)組解構(gòu)賦值
- 數(shù)組解構(gòu)賦值是
ES6
新增的賦值方式 - 數(shù)組解構(gòu)賦值注意點
- 在數(shù)組的解構(gòu)賦值中,等號左邊的格式必須和等號右邊的格式一模一樣,才能
完全結(jié)構(gòu)
- 在數(shù)組的解構(gòu)賦值中,左邊的個數(shù)可以和右邊的個數(shù)不一樣
- 在數(shù)組的解構(gòu)賦值中,右邊的個數(shù)可以和左邊的個數(shù)不一樣
- 在數(shù)組的解構(gòu)賦值中,如果右邊的個數(shù)和左邊的個數(shù)不一樣,那么我們可以給左邊指定默認(rèn)值
- 在數(shù)組的解構(gòu)賦值中,如果左邊的個數(shù)和右邊的個數(shù)一樣,那么設(shè)置默認(rèn)值會被覆蓋
- 在數(shù)組的解構(gòu)賦值中,還可以使用ES6中新增的擴(kuò)展運(yùn)算符
...
來打包剩余的數(shù)據(jù),如果使用了擴(kuò)展運(yùn)算符,那么擴(kuò)展運(yùn)算符只能寫在最后
- 在數(shù)組的解構(gòu)賦值中,等號左邊的格式必須和等號右邊的格式一模一樣,才能
數(shù)組增刪改查
let arr = ["a", "b", "c"];
需求: 獲取數(shù)組中索引為1的那個數(shù)據(jù) (查)
console.log(arr[1]);
需求: 將索引為1的數(shù)據(jù)修改為m (改)
arr[1] = "m";
需求: 將索引為1的數(shù)據(jù)修改為d, 索引為2的修改為e (改)
arr.splice(1, 2, "d", "e");
參數(shù)1: 從什么位置開始
參數(shù)2: 需要替換多少個元素
參數(shù)3開始: 新的內(nèi)容
需求: 要求在數(shù)組最后添加一條數(shù)據(jù) (增)
arr.push("d");
push方法可以在數(shù)組的最后新增一條數(shù)據(jù), 并且會將新增內(nèi)容之后數(shù)組當(dāng)前的長度返回給我們
需求: 要求在數(shù)組最后添加兩條數(shù)據(jù) (增)
arr.push("d", "e");
數(shù)組的push方法可以接收1個或多個參數(shù)
需求: 要求在數(shù)組最前面添加一條數(shù)據(jù) (增)
arr.unshift("m");
unshift方法和push方法一樣, 會將新增內(nèi)容之后當(dāng)前數(shù)組的長度返回給我們
需求: 要求在數(shù)組最前面添加兩條數(shù)據(jù) (增)
unshift方法和push方法一樣, 可以接收1個或多個參數(shù)
需求: 要求刪除數(shù)組最后一條數(shù)據(jù) (刪)
arr.pop();
數(shù)組的pop方法可以刪除數(shù)組中的最后一條數(shù)據(jù), 并且將刪除的數(shù)據(jù)返回給我們
需求: 要求刪除數(shù)組最前面一條數(shù)據(jù) (刪)
arr.shift();
數(shù)組的shift方法可以刪除數(shù)組中的最前面一條數(shù)據(jù), 并且將刪除的數(shù)據(jù)返回給我們
需求: 要求刪除數(shù)組中索引為1的數(shù)據(jù) (刪)
arr.splice(1, 1);
參數(shù)1: 從什么位置開始
參數(shù)2: 需要刪除多少個元素
數(shù)組的常用方法
-
清空數(shù)組
arr = []; arr.length = 0; arr.splice(0, arr.length);
-
將數(shù)組轉(zhuǎn)換為字符串
arr.toString();
-
將數(shù)組轉(zhuǎn)換成指定格式字符串
arr.join(); 數(shù)組不能夠使用加號進(jìn)行拼接, 如果使用加號進(jìn)行拼接會先轉(zhuǎn)換成字符串再拼接 join方法默認(rèn)情況下如果沒有傳遞參數(shù),就是調(diào)用toString join方法如果傳遞了參數(shù),就會將傳遞的參數(shù)作為元素和元素的連接符號
-
將兩個數(shù)組拼接為一個數(shù)組
arr1.concat(arr2); let res = [...arr1,...arr2]; 擴(kuò)展運(yùn)算符在解構(gòu)賦值中(等號的左邊)表示將剩余的數(shù)據(jù)打包成一個新的數(shù)組 擴(kuò)展運(yùn)算符在等號右邊, 那么表示將數(shù)組中所有的數(shù)據(jù)解開, 放到所在的位置
-
對數(shù)組中的內(nèi)容進(jìn)行反轉(zhuǎn)
arr.reverse(); 會修改原有數(shù)組
-
截取數(shù)組中指定范圍內(nèi)容
arr.slice(); slice方法是包頭不包尾(包含起始位置,不包含結(jié)束位置)
-
查找元素在數(shù)組中的位置
arr.indexOf(參數(shù)1,參數(shù)2); arr.lastindexOf(參數(shù)1,參數(shù)2); 參數(shù)1: 需要查找的元素 參數(shù)2: 從什么位置開始查找 indexOf方法默認(rèn)是從左至右的查找, 一旦找到就會立即停止查找 lastIndexOf方法默認(rèn)是從右至左的查找, 一旦找到就會立即停止查找
-
判斷數(shù)組中是否包含某個元素
arr.includes();根據(jù)返回true或者false來判斷 還可以通過indexOf和lastIndexOf的結(jié)果, 判斷是否是-1即可
二維數(shù)組
二維數(shù)組就是數(shù)組的每一個元素又是一個數(shù)組,稱之為二維數(shù)組
-
操作二維數(shù)組
-
從二維數(shù)組中獲取數(shù)據(jù)
- 數(shù)組名稱[二維數(shù)組索引];得到一個一維數(shù)組
- 數(shù)組名稱[二維數(shù)組索引][一維數(shù)組索引];得到一維數(shù)組中的元素
-
往二維數(shù)組中存儲數(shù)據(jù)
- 數(shù)組名稱[二維數(shù)組索引] = 一維數(shù)組;
- 數(shù)組名稱[二維數(shù)組索引][一維數(shù)組索引] = 值;
-