Array詳解(陣列詳解)
阿新 • • 發佈:2022-05-11
一,陣列的概念
陣列一般是由相同型別的元素組成的集合,是物件;
陣列是值的有序集合,陣列中的每個值稱為一個元素,每個元素在陣列中都有一個數字位置,稱為索引,索引從 0 開始,依次遞增。
定義
方式1,new 陣列名 (引數,引數,...)
只有一個數字引數時是陣列的長度(new可以省略,但一般儘量寫上)
1 //定義一個空陣列
2 var 陣列名 = new Array();
3 //建立一個包含 10 個元素的陣列,沒有賦值
4 var 陣列名 = new Array(10);
5 //建立一個數組有兩個元素
6 var 陣列名 = new Array("孫悟空",100);
1 var onelist = ['one',1,null,]; //定義一個數組 onelist
二,陣列的屬性
下標:表示陣列的第 幾個元素,從左往右數,從 0 開始也叫索引;
1 arr[ 0 ] : 表示陣列的第 1 個元素 , 他是下標,從 0 開始也叫索引; 2 3 注意:下標可以是變數或表示式 4 5 let arr1 = [a,b,c,d]; 6 let number = arr1[0]; 7 console.log(number); 8 //列印陣列中的第一個元素 a
長度:length屬性,代表陣列的長度,等於陣列的元素個數。
1var arr = [] //定義一個空陣列 2 arr.length = 4; //可以將其長度改為4 3 console.log(arr); //輸出 四個 空預設為實體型別 empty 列印的值仍是undefined
三,陣列的方法
-
棧方法(新增,刪除)
-
push():在陣列最後新增一個元素,返回新增後陣列的長度;
-
1 let arr = [1,2,3]; 2 let newArr = arr.push(4); 3 4 console.log(arr); 5 //列印:[1,2,3,4] 6 console.log(newArr ); 7 //
-
pop():刪除陣列最後一個,返回被刪除的元素;
-
1 let arr = [1,2,3]; 2 let newArr = arr.pop(); 3 4 console.log(arr); 5 //列印:[1,2] 6 console.log(newArr ); 7 //列印:3 注意返回值為刪除的陣列元素
-
-
佇列方法(新增,刪除)
-
unshift():在陣列最前面新增,返回新增後陣列的長度;
-
1 let arr = [1,2,3]; 2 let newArr = arr.unshift(4); 3 4 console.log(arr); 5 //列印:[4,1,2,3] 6 console.log(newArr ); 7 //列印:4 注意返回值為改變後陣列長度
-
shift():刪除陣列第一個,返回被刪除的元素;
-
1 let arr = [1,2,3]; 2 let newArr = arr.shift(); 3 4 console.log(arr); 5 //列印:[2,3] 6 console.log(newArr ); 7 //列印:1 注意返回值為改變後陣列長度
-
排序方法
-
sort():預設按 ASCII 碼正序排列,兩位或以上的數字會自動轉換為string型別,只取第一位數。如 12 取 1 的 ASCII 碼比較;
-
一般使用函式進行排序:
-
-
1 arr.sort(function(a,b){ 2 return a-b; //返回為 正 為正序 3 }) 4 arr.sort(function(a,b){ 5 return b-a; //返回為 負 為倒序 6 }
-
reserver():反轉陣列順序,改變原有陣列;沒有引數;返回值為改變後的陣列;
-
1 var arr = [1,2,3] 2 var arrResver = arr.reverser() 3 console.log(arrResver ); 4 //輸出:[3,2,1] 5 6 //它的返回值和原陣列指向的同一個地址 7 arr == arrResver //true 8 arr === arrResver //true
-
-
陣列查詢
-
indexOf():根據對應的值找下標,找的是值第一次出現的位置,返回它的下標;預設從下標 0 開始找,沒有找到則返回 - 1;
-
1 let arr = [1,2,3]; 2 let number = arr.indexOf(3); 3 let int = arr.indexOf(4); 4 5 console.log(number); 6 //列印: 2 注意返回值為查詢值的下標 7 8 console.log(int); 9 //列印: -1 注意沒有找到則返回 -1
-
lastindexOf():跟indexOf() 一樣,只不過從後往前開始找;
-
陣列擷取
-
slice():不修改原陣列, 將原陣列中的指定區域資料提取出來,返回的是一個新的陣列;
- 兩個引數:start:開始下標,end:結束下標; 包括開始下標的值,不包括結束下標的值;
-
1 let arr = [1,2,3]; 2 let newArr = arr.slice(1,2); 3 4 console.log(newArr); 5 //列印 [2] 擷取原陣列,返回一個新陣列,不包括結束位置;
-
-
數組合並,連線
- concat():把
-
1 var arr1 = [1,2,3] 2 var arr2 = [4,5,6] 3 var newarr = arr1.concat(arr2) 4 console.log(newarr) //輸出 [1,2,3,4,5,6]
- join():把陣列
-
1 var arr1 = [1,2,3] 2 var newarr = arr1.join() //無分割符,預設原,號分割 3 var newarr1 = arr1.join("/") //以 / 為分割符 4 console.log(newarr) //輸出 1,2,3 5 console.log(newarr1) //輸出 1/2/3
-
陣列增,刪,改
-
splice():擷取原陣列中指定的資料, 會改變原陣列;
- 刪除:(開始下標 刪除的個數)(個數可以被省略,就是刪到最後)。
-
1 var arr = [1,2,3] 2 var newarr = arr.splice(0,1) 3 //返回 被刪除元素組成的陣列 4 5 console.log(newarr) //輸出 [1] 6 console.log(arr) //輸出 [2,3] 7 var arr1 = [1,2,3] 8 var newarr1 = arr.splice(0) 9 console.log(newarr1) //輸出 [1,2,3] 10 console.log(arr1) //輸出 []
-
插入:(開始下標,刪除的個數,"新元素")插入元素到指定位置,將刪除個數改為 0 ,不刪除元素,直接插入新元素。
-
1 var arr = [1,2,3] 2 var newarr = arr.splice(0,0,4) 3 //返回 被刪除元素組成的陣列 4 5 console.log(newarr) //輸出 [] 6 console.log(arr) //輸出 [4,1,2,3] 7 var arr1 = [1,2,3] 8 var newarr1 = arr1.splice(1,0,4) 9 console.log(newarr1) //輸出 [] 空陣列 10 console.log(arr1) //輸出 [1,4,2,3]
-
替換:將刪除位置的資料替換,刪除資料位置要輸入新的值
-
1 let arr = [1,2,3] 2 let newarr = arr.splice(0,1,4) //返回 被刪除元素組成的陣列 3 console.log(newarr) //輸出 [1] 4 console.log(arr) //輸出 [4,2,3] 已刪除並替換掉
-
遍歷陣列的方法
-
for of:遍歷資料的每一個元素;
-
1 let arr = [1,3,2,4] 2 for(let v of arr){ 3 console.log(v); 4 //輸出 :1,3,2,4; 5 }
-
ES5新增:高階函式中常用的兩個:forEach,map。
- forEach:
-
1 let arr = [1,2,3,4,5] 2 //value代表值,index代表下標,arr代表陣列;都是形參可以改為任意字母; 3 arr.forEach(function(value,index,arr){ 4 console.log("值:" + value + ", 下標:" + index + ", 陣列:" + array); 5 })
- map:遍歷陣列中的每一項,map的回撥函式中支援return返回;
-
1 var arr = [1,2,3,4,5] 2 arr.map(function(value,index,arr){ 3 console.log("值:" + value + ", 下標:" + index + ", 陣列:" + array); 4 })