您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Javascript中的數(shù)組是什么意思”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Javascript中的數(shù)組是什么意思”吧!
在Javascript中,數(shù)組是指有序數(shù)據(jù)的集合,數(shù)組中的每個成員被稱為元素,每個元素的名稱(鍵)被稱為數(shù)組下標(Index);數(shù)組的長度是彈性的、可讀寫的。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
JavaScript 數(shù)組(Array)是有序數(shù)據(jù)的集合,數(shù)組中的每個成員被稱為元素(Element),每個元素的名稱(鍵)被稱為數(shù)組下標(Index)。數(shù)組的長度是彈性的、可讀寫的。
Array 數(shù)組對象是 JS 的內(nèi)置對象,它可以用一個變量來存儲一系列相同或不同類型的值,其中存儲的每個值稱為數(shù)組元素。
JS數(shù)組的創(chuàng)建
使用 Array 對象存儲數(shù)據(jù)之前必須先創(chuàng)建 Array 對象。創(chuàng)建 Array 對象有多種方式,下面列出兩種常用方式。
方式一:var 數(shù)組對象名 = [元素1,元素2,…,元素n];
方式二:var 數(shù)組對象名 = new Array(元素1,元素2,…,元素n);
方式一是一種較簡潔的數(shù)組創(chuàng)建方法,而方式二則是一種較正式的數(shù)組創(chuàng)建方法。這兩種創(chuàng)建方式都返回新創(chuàng)建并被初始化了的數(shù)組對象,它們都使用參數(shù)指定的值初始化數(shù)組,元素個數(shù)(也叫數(shù)組長度)為參數(shù)的個數(shù)。這兩種方式效果在一般情況下是一樣的,但由于方式一更簡潔,因此在實際應用中最常用。
數(shù)組創(chuàng)建示例:
var hobbies1 = ["旅游","運動","音樂"]; var hobbies2 = new Array("旅游","運動","音樂");
上面示例代碼創(chuàng)建了兩個包含 3 個元素的數(shù)組對象,它們是完全等效的,但第一行代碼更簡潔。
需要注意的是:上述兩種創(chuàng)建數(shù)組的方式,一般情況下是完全等效的,除了只有一個數(shù)值類型參數(shù)的情況。因為此時,使用第一種創(chuàng)建方式時,表示創(chuàng)建的是一個只包含一個元素的數(shù)組,該元素的值等于數(shù)值參數(shù);使用第二種創(chuàng)建方式,則表示創(chuàng)建了一個長度等于數(shù)值類型參數(shù)的數(shù)組,例如:
var arr = [3]; //創(chuàng)建了一個只有一個元素的數(shù)組,元素值為3 var arr = new Array(3);//創(chuàng)建了一個有3個元素的數(shù)組,3個元素值均為undefined
JS數(shù)組元素的引用
數(shù)組中存儲的每個元素都有一個位置索引(也叫下標),數(shù)組下標從 0 開始,到數(shù)組長度 -1 結束,即第一個元素的下標為 0,最后一個元素的下標為數(shù)組長度 -1。
引用數(shù)組元素時可以通過數(shù)組名和下標來實現(xiàn),引用格式如下:
數(shù)組名[元素下標]
例如:一個包含 3 個元素的名為 arr 的數(shù)組的 3 個元素,可分別通過:arr[0]、arr[1] 和 arr[2] 來引用。
JS數(shù)組的訪問
訪問數(shù)組有兩種方式:
一是直接訪問數(shù)組名,此時將返回數(shù)組中存儲的所有元素值。例如,alert(hobbies1),該語句執(zhí)行后將在警告對話框中輸出上面創(chuàng)建的 hobbies1 數(shù)組中存儲的所有元素值:旅游,運動,音樂;
二是使用數(shù)組加下標訪問,此時將返回數(shù)組下標對應的數(shù)組元素值。例如:alert(hobbies1[1]),該語句執(zhí)行后將在警告對話框中輸出“運動”。
JS遍歷數(shù)組(for in和forEach循環(huán))
JS 遍歷數(shù)組(循環(huán)數(shù)組)的方式有多種,可以使用傳統(tǒng)的 for 循環(huán),也可以使用升級版的 for in 循環(huán),還可以使用 Array 類型的 forEach() 方法;如果希望遍歷對象的鍵名,還可以使用 keys() 方法。
1、使用 for 和 for in遍歷數(shù)組
for 和 for/in 語句都可以迭代數(shù)組。for 語句需要配合 length 屬性和數(shù)組下標來實現(xiàn),執(zhí)行效率沒有 for/in 語句高。另外,for/in 語句會跳過空元素。
對于超長數(shù)組來說,建議使用 for/in 語句進行迭代。
示例1
下面示例使用 for 語句迭代數(shù)組,過濾出所有數(shù)字元素。
var a = [1, 2, ,,,,,,true,,,,,,, "a",,,,,,,,,,,,,,,4,,,,,56,,,,,,"b"]; //定義數(shù)組 var b = [], num = 0; for (var i = 0; i < a.length; i ++) { //遍歷數(shù)組 if (typeof a[i] == "number") //如果為數(shù)字,則返回該元素的值 b.push(a[i]); num ++; //計數(shù)器 } console.log(num); //返回42,說明循環(huán)了42次 console.log(b); //返回[1,2,4,56]
示例2
下面代碼使用 for/in 語句迭代示例 1 中的數(shù)組 a。在 for/in 循環(huán)結構中,變量 i 表示數(shù)組的下標,而 a[i] 為可以讀取指定下標的元素值。
var b = [], num = 0; for (var i in a) { //遍歷數(shù)組 if(typeof a[i] == "number") //如果為數(shù)字,則返回該元素的值 b.push(a[i]); num ++; //計數(shù)器 } console.log(num); //返回7,說明循環(huán)了7次 console.log(b); //返回[1,2,4,56]
通過計時器可以看到,for/in 語句迭代數(shù)組,僅循環(huán)了 7 次,而 for 語句循環(huán)了 42 次。
2、使用 forEach 遍歷數(shù)組
Array 類型為每個數(shù)組定義了 forEach() 原型方法,使用該方法可以為數(shù)組執(zhí)行迭代操作。具體說明如下:
array.forEach(callbackfn[, thisArg]);
參數(shù)說明如下:
array:一個數(shù)組對象。
callbackfn:必需參數(shù),最多可以接收三個參數(shù)的函數(shù)。forEach 將為數(shù)組中的每個元素調(diào)用 callbackfn 函數(shù)一次。
thisArg:可選參數(shù),callbackfn 函數(shù)中的 this 可引用的對象。如果省略 thisArg,則 this 的值為 undefined。
對于數(shù)組中出現(xiàn)的每個元素,forEach 方法都會調(diào)用 callbackfn 函數(shù)一次,采用升序索引順序,但不會為數(shù)組中空元素調(diào)用回調(diào)函數(shù)。
除了數(shù)組對象之外,forEach 方法還可以用于有 length 屬性且具有已按數(shù)字編制索引的屬性名的任何對象,如關聯(lián)數(shù)組對象、Arguments 等。
回調(diào)函數(shù)語法如下:
funtion callbackfn(value, index, array);
最多可以使用三個參數(shù)來聲明回調(diào)函數(shù)?;卣{(diào)函數(shù)的參數(shù)說明如下。
value:數(shù)組元素的值。
index:數(shù)組元素的數(shù)字索引。
array:包含該元素的數(shù)組對象。
forEach 方法不直接修改原始數(shù)組,但回調(diào)函數(shù)可能會修改它。
示例
下面示例使用 forEach 迭代數(shù)組 a,然后把每個元素的值和下標索引輸出顯示,代碼如下:
function f(value,index,array) { console.log("a[" + index + "] = " + value); } var a = ['a', 'b', 'c']; a.forEach(f);
演示結果如下:
到此,相信大家對“Javascript中的數(shù)組是什么意思”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。