10-javaScript-陣列(Array)
阿新 • • 發佈:2018-11-30
文章配套視訊
1. 基本定義
為什麼要用陣列
之前學習的資料型別,只能儲存一個值。(字串為一個值)
我們想儲存多個值的時候可以使用陣列。(字串不方便)
比如:儲存班級中所有學生的姓名。
陣列變數可以存放多個數據; 好比一個軍隊,軍隊裡面有很多軍人
2. 陣列是什麼?
陣列是一種資料型別, 屬於物件
把很多資料裝入一個盒子中,用的時候在取出來 把很多資料裝入一個盒子中,用的時候在取出來 不同的是普通物件是使用字串作為屬性名的,而陣列時使用數字來作為索引操作元素
陣列的儲存效能比普通物件要好,在開發中我們經常使用陣列來儲存一些資料
###3. 建立陣列的方式
使用 Array 建構函式
建立一個空陣列
var arr1 = new Array();
建立一個長度為30的陣列
var arr2 = new Array(30);
建立一個包含2個字串的陣列
var arr3 = new Array("旋之華","yann");
使用陣列字面量
建立一個空陣列 var arr4 = []; 建立一個長度為30的陣列 var arr5 = [30]; 建立一個包含2個字串的陣列 var arr6 = ["撩課學院","www.itlike.com"];
4. 原理
如下圖:
陣列儲存的資料可以是任何型別(數字、字元、布林值等)
###5. 常用操作
length
陣列的長度 = 陣列名.length;
可以通過修改陣列的長度來改變陣列中元素的個數,
如果改小了,陣列從後面刪除元素。(偽陣列的長度可以修改,但是不能修改裡面的元素)
獲取陣列中的元素
陣列中的指定元素 = 陣列名[索引值];
陣列的索引代表的是陣列中的元素在陣列中的位置,從0開始。
如果獲取陣列中元素是,陣列名[索引值],
沒有指定索引(元素沒那麼多),系統不報錯,而是給定值為undefined;
6. 常用API
join() push()和pop() shift() 和 unshift() sort() reverse() concat() slice() splice() indexOf()和 lastIndexOf() forEach() map() filter() every() some() reduce()和 reduceRight()
join(separator)
將陣列的元素組起一個字串,以separator為分隔符,
省略的話則用預設用逗號為分隔符,該方法只接收一個引數:即分隔符。
push()和pop()
push() 接收任意數量的引數,把它們逐個新增到陣列末尾,並返回修改後陣列的長度;
pop() 陣列末尾移除最後一項,減少陣列的 length 值,然後返回移除的項。
shift() 和 unshift()
shift() 刪除原陣列第一項,並返回刪除元素的值, 如果陣列為空則返回undefined;
unshift 將引數新增到原陣列開頭,並返回陣列的長度 。
reverse()
//反轉陣列項的順序
var arr = [1, 3, 5, 7];
console.log(arr.reverse()); //[7, 5, 3, 1]
console.log(arr); //[7, 5, 3, 1](原陣列改變).
concat()
將引數新增到原陣列中。這個方法會先copy一個當前陣列,
然後將接收到的引數新增到這個copy陣列的末尾,
最後返回新構建的陣列。
在沒有給 concat()方法傳遞引數的情況下,它只是複製當前陣列並返回。
indexOf()和 lastIndexOf()
indexOf() 接收兩個引數:
要查詢的項和(可選的)表示查詢起點位置的索引。其中, 從陣列的開頭(位置 0)開始向後查詢。
lastIndexOf接收兩個引數:
要查詢的項和(可選的)表示查詢起點位置的索引。其中, 從陣列的末尾開始向前查詢。
這兩個方法都返回要查詢的項在陣列中的位置,或者在沒找到的情況下返回-1。
在比較第一個引數與陣列中的每一項時,會使用全等操作符。
forEach()
這個方法只支援IE8以上的瀏覽器, 所以如果需要相容IE8,
則不要使用forEach, 還是使用for迴圈來遍歷
使用:
forEach()方法需要一個函式作為引數
該函式,由我們建立但是不由我們呼叫的,稱為回撥函式
陣列中有幾個元素, 函式就會執行幾次,每次執行時,
瀏覽器會將遍歷到的元素以實參的形式傳遞進來,我們可以來定義形參,來讀取這些內容
瀏覽器會在回撥函式中傳遞三個引數
第一個引數,就是當前正在遍歷的元素
第二個引數,就是當前正在遍歷的元素的索引
第三個引數,就是正在遍歷的陣列
格式
arr.forEach(function(value , index , obj){
console.log(value);
});