1. 程式人生 > >10-javaScript-陣列(Array)

10-javaScript-陣列(Array)

文章配套視訊

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);
});