首頁  >  文章  >  web前端  >  Javascript數組什麼意思

Javascript數組什麼意思

青灯夜游
青灯夜游原創
2021-07-21 19:06:522463瀏覽

在Javascript中,數組是指有序資料的集合,數組中的每個成員被稱為元素,每個元素的名稱(鍵)被稱為數組下標(Index);數組的長度是彈性的、可讀寫的。

Javascript數組什麼意思

本教學操作環境: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 = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;];
a.forEach(f);

演示结果如下:

Javascript數組什麼意思

【推荐学习:javascript高级教程

以上是Javascript數組什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn