在Javascript中,數組是指有序資料的集合,數組中的每個成員被稱為元素,每個元素的名稱(鍵)被稱為數組下標(Index);數組的長度是彈性的、可讀寫的。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
JavaScript 陣列(Array)是有序資料的集合,數組中的每個成員被稱為元素(Element),每個元素的名稱(鍵)被稱為數組下標(Index)。數組的長度是彈性的、可讀寫的。
Array 陣列物件是 JS 的內建對象,它可以用一個變數來儲存一系列相同或不同類型的值,其中儲存的每個值稱為陣列元素。
JS陣列的建立
使用 Array 物件儲存資料之前必須先建立 Array 物件。建立 Array 物件有多種方式,以下列出兩種常用方式。
方式一:var 陣列物件名稱= [元素1,元素2,…,元素n];
方式二:var 陣列物件名稱= new Array(元素1,元素2,…,元素n);
方式一是一種較簡潔的陣列建立方法,而方式二則是一種較正式的數組創建方法。這兩種創建方式都會傳回新建立並被初始化了的數組對象,它們都使用參數指定的值初始化數組,元素個數(也叫數組長度)為參數的個數。這兩種方式效果在一般情況下是一樣的,但由於方式一更簡潔,因此在實際應用上最常使用。
陣列建立範例:
var hobbies1 = ["旅游","运动","音乐"]; var hobbies2 = new Array("旅游","运动","音乐");
上面範例程式碼建立了兩個包含 3 個元素的陣列對象,它們是完全等效的,但第一行程式碼更簡潔。
要注意的是:上述兩種建立陣列的方式,一般情況下是完全等效的,除了只有一個數值類型參數的情況。因為此時,使用第一種創建方式時,表示創建的是一個只包含一個元素的數組,該元素的值等於數值參數;使用第二種創建方式,則表示創建了一個長度等於數值類型參數的數組,例如:
var arr = [3]; //创建了一个只有一个元素的数组,元素值为3 var arr = new Array(3);//创建了一个有3个元素的数组,3个元素值均为undefined
JS數組元素的引用
數組中儲存的每個元素都有一個位置索引(也叫下標),數組下標從0 開始,到陣列長度-1 結束,即第一個元素的下標為0,最後一個元素的下標為陣列長度-1。
引用數組元素時可以透過數組名和下標來實現,引用格式如下:
数组名[元素下标]
例如:一個包含3 個元素的名為arr 的數組的3 個元素,可分別以:arr[0]、arr[1] 和arr[2] 來引用。
JS陣列的存取
存取陣列有兩種方式:
一是直接存取陣列名,此時將傳回數組中儲存的所有元素值。例如,alert(hobbies1),該語句執行後將在警告對話框中輸出上面創建的hobbies1 數組中存儲的所有元素值:旅遊,運動,音樂;
二是使用數組加下標訪問,此時將傳回數組下標對應的數組元素值。例如:alert(hobbies1[1]),該語句執行後將在警告對話方塊中輸出「運動」。
JS遍歷數組(for in和forEach循環)
JS 遍歷數組(循環數組)的方式有多種,可以使用傳統的for 循環,也可以使用升級版的for in 循環,也可以使用Array 類型的forEach() 方法;如果希望遍歷物件的鍵名,也可以使用keys() 方法。
1、使用 for 和 for in遍歷陣列
for 和 for/in 語句都可以迭代陣列。 for 語句需要配合 length 屬性和陣列下標來實現,執行效率沒有 for/in 語句高。另外,for/in 語句會跳過空元素。
對於超長數組來說,建議使用 for/in 語句進行迭代。
範例1
以下範例使用 for 語句迭代數組,過濾出所有數字元素。
var a = [1, 2, ,,,,,,true,,,,,,, "a",,,,,,,,,,,,,,,4,,,,,56,,,,,,"b"]; //定义数组 var b = [], num = 0; for (var i = 0; i < a.length; i ++) { //遍历数组 if (typeof a[i] == "number") //如果为数字,则返回该元素的值 b.push(a[i]); num ++; //计数器 } console.log(num); //返回42,说明循环了42次 console.log(b); //返回[1,2,4,56]
範例2
下面程式碼使用 for/in 語句迭代範例 1 中的陣列 a。在 for/in 迴圈結構中,變數 i 表示陣列的下標,而 a[i] 為可以讀取指定下標的元素值。
var b = [], num = 0; for (var i in a) { //遍历数组 if(typeof a[i] == "number") //如果为数字,则返回该元素的值 b.push(a[i]); num ++; //计数器 } console.log(num); //返回7,说明循环了7次 console.log(b); //返回[1,2,4,56]
透過計時器可以看到,for/in 語句迭代數組,僅循環了 7 次,而 for 語句循環了 42 次。
2、使用 forEach 遍歷陣列
Array 類型為每個陣列定義了 forEach() 原型方法,使用該方法可以為陣列執行迭代操作。具體說明如下:
array.forEach(callbackfn[, thisArg]);
參數說明如下:
array:一個陣列物件。
callbackfn:必要參數,最多可以接收三個參數的函數。 forEach 將為數組中的每個元素呼叫 callbackfn 函數一次。
thisArg:可選參數,callbackfn 函數中的 this 可引用的物件。如果省略 thisArg,則 this 的值為 undefined。
对于数组中出现的每个元素,forEach 方法都会调用 callbackfn 函数一次,采用升序索引顺序,但不会为数组中空元素调用回调函数。
除了数组对象之外,forEach 方法还可以用于有 length 属性且具有已按数字编制索引的属性名的任何对象,如关联数组对象、Arguments 等。
回调函数语法如下:
funtion callbackfn(value, index, array);
最多可以使用三个参数来声明回调函数。回调函数的参数说明如下。
value:数组元素的值。
index:数组元素的数字索引。
array:包含该元素的数组对象。
forEach 方法不直接修改原始数组,但回调函数可能会修改它。
示例
下面示例使用 forEach 迭代数组 a,然后把每个元素的值和下标索引输出显示,代码如下:
function f(value,index,array) { console.log("a[" + index + "] = " + value); } var a = ['a', 'b', 'c']; a.forEach(f);
演示结果如下:
【推荐学习:javascript高级教程】
以上是Javascript數組什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!