JavaScript數組0709
1.創建方式
- 通過構造函數創建數組
- let 變量名稱 = new Array(size); 創建一個指定大小數組
- let 變量名稱 = new Array(); 創建一個空數組
- let 變量名稱 = new Array(data1, data2, ...); 創建一個帶數據的數組
- 通過字面量創建 ==推薦==
- let 變量名稱 = []; 創建一個空數組
- let 變量名稱 = [data1, data2, ...]; 創建一個空數組
2.注意點
- 和其它編程語言不同, 如果數組對應的索引中沒有存儲數據, 默認存儲的就是undefined
- 和其它編程語言不同, JavaScript中訪問了數組中不存在的索引不會報錯, 會返回undefined
- 和其它編程語言不同, 當JavaScript中數組的存儲空間不夠時數組會自動擴容
- 和其它編程語言不同, JavaScript的數組可以存儲不同類型數據
- 和其它編程語言不同, JavaScript中數組分配的存儲空間不一定是連續的其它語言數組分配的存儲空間都是連續的, JavaScript數組是采用"哈希映射"方式分配存儲空間
- 如果存儲的都是相同類型的數據, 那么會盡量分配連續的存儲空間
- 如果存儲的不是相同的數據類型, 那么就不會分配連續的存儲空間
3.數組解構
-
解構賦值是ES6中新增的一種賦值方式
let arr = [1, 3, 5]; let [a, b, c] = arr;
在數組的解構賦值中, 等號左邊的格式必須和等號右邊的格式一模一樣, 才能==完全解構==
在數組的解構賦值中, 左邊的個數可以和右邊的個數不一樣(少的就是undefined
在數組的解構賦值中,如果右邊的個數和左邊的個數不一樣, 那么我們可以給左邊指定默認值
在數組的解構賦值中, 如果左邊的個數和右邊的個數不一樣, 那么如果設置默認值會被覆蓋
-
在數組的解構賦值中, 還可以使用ES6中新增的擴展運算符來打包剩余的數據,如果使用了擴展運算符, 那么擴展運算符只能寫在最后
// ES6中新增的擴展運算符: ... // let [a, b] = [1, 3, 5]; let [a, ...b] = [1, 3, 5];
數組增刪改查
1.增
//1.push方法可以在數組的最后新增數據, 并且會將新增內容之后數組當前的長度返回給我們 let res = arr.push("d"); console.log(res); console.log(arr); // 數組的push方法可以接收1個或多個參數 arr.push("d", "e"); // 需求: 要求在數組最前面添加一條數據 (返回長度),unshift方法和push方法一樣, 可以接收1個或多個參數 let res = arr.unshift("m"); console.log(res); console.log(arr);
2.刪
// 需求: 要求刪除數組最后一條數據 (刪) // 數組的pop方法可以刪除數組中的最后一條數據, 并且將刪除的數據返回給我們 let res = arr.pop(); console.log(res); console.log(arr); // 需求: 要求刪除數組最前面一條數據 (刪) // 數組的shift方法可以刪除數組中的最前面一條數據, 并且將刪除的數據返回給我們 let res = arr.shift(); console.log(res); console.log(arr); // 需求: 要求刪除數組中索引為1的數據 (刪) // 以下代碼的含義: 從索引為1的元素開始刪除1條數據 // 參數1: 從什么位置開始 // 參數2: 需要刪除多少個元素 arr.splice(1, 1); console.log(arr); // 需求: 要求刪除數組中除了第0條以外的所有數據 (刪) arr.splice(1, 2); console.log(arr);
3.改
// 參數1: 從什么位置開始 // 參數2: 需要替換多少個元素 // 參數3開始: 新的內容 arr.splice(1, 2, "d", "e"); console.log(arr);
數組常用方法
1.清空數組
arr.splice(0, arr.length)
2.將數組轉化為字符串
let str = arr.toString();
3.將數組轉換為指定格式字符串
// join方法默認情況下如果沒有傳遞參數, 就是調用toString(); // join方法如果傳遞了參數, 就會將傳遞的參數作為元素和元素的連接符號 let str = arr.join("+"); console.log(str); console.log(typeof str);
4.數組的拼接
let arr1 = [1, 3, 5]; let arr2 = [2, 4, 6]; //注意點: 數組不能夠使用加號進行拼接, 如果使用加號進行拼接會先轉換成字符串再拼接 // let res = arr1 + arr2; let res = arr1.concat(arr2); // 注意點: 擴展運算符在解構賦值中(等號的左邊)表示將剩余的數據打包成一個新的數組 //擴展運算符在等號右邊, 那么表示將數組中所有的數據解開, 放到所在的位置 let res = [...arr1, ...arr2]; // let res = [1, 3, 5, 2, 4, 6]; console.log(res); console.log(typeof res); //注意點: 不會修改原有的數組, 會生成一個新的數組返回給我們 console.log(arr1); console.log(arr2);
5.數組反轉
let res = arr.reverse(); console.log(res); // 注意點: 會修改原有的數組 console.log(arr);
6.截取指定范圍內容
let arr = [1, 2, 3, 4, 5]; // slice方法是包頭不包尾(包含起始位置, 不包含結束的位置) let res = arr.slice(1, 3) console.log(res); console.log(arr);
7.查找元素位置
let arr = [1, 2, 3, 4, 5, 3]; // indexOf方法如果找到了指定的元素, 就會返回元素對應的位置 // indexOf方法如果沒有找到指定的元素, 就會返回-1 // 注意點: indexOf方法默認是從左至右的查找, 一旦找到就會立即停止查找 let res = arr.indexOf(3); let res = arr.indexOf(6); // 參數1: 需要查找的元素 // 參數2: 從什么位置開始查找 let res = arr.indexOf(3, 4); // 注意點: lastIndexOf方法默認是從右至左的查找, 一旦找到就會立即停止查找 let res = arr.lastIndexOf(3); let res = arr.lastIndexOf(3, 4); console.log(res);
8.分割有符號的數組
//例如我們鍵盤輸入1,2,4,3,5(有逗號) 執行完后s為[1,2,4,3,5]
let a = prompt();
let s=a.split(",");
數組練習
- 幾種排序
二維數組
取元素
let arr = [[1, 3], [2, 4]]; //數組名稱[二維數組索引]; 得到一個一維數組 let arr1 = arr[0]; console.log(arr1); // 數組名稱[二維數組索引][一維數組索引]; 得到一維數組中的元素 let ele = arr[0][1]; console.log(ele);
存元素
// 注意點: 在定義二維數組的時候, 將來需要存儲多少個一維數組, 就寫上多少個[]即可 let arr = [[],[]]; // 數組名稱[二維數組索引] = 一維數組; arr[0] = [1, 3]; //數組名稱[二維數組索引][一維數組索引] = 值; arr[1][0] = 2; console.log(arr);
遍歷(注意和c,java的區別)
let arr = [[1, 3], [2, 4]]; for(let i = 0; i < arr.length; i++){ let subArray = arr[i]; // console.log(subArray); for(let j = 0; j < subArray.length; j++){ console.log(subArray[j]); } }