處理集合_建立陣列_1
阿新 • • 發佈:2020-12-02
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>建立陣列</title> <script src="../unitl/test.js"></script> <style> #results li.pass {color:green;} #results li.fail {color:red;} </style> </head> <body> <ul id="results"></ul> </body> <script> //使用陣列字面量[]建立陣列。 const ninjas = ["Kuma","Hattori","Yagyu"]; //使用內建Array建構函式建立陣列 const samurai = new Array("Oda","Tomoe"); //length屬性高數我們陣列的大小 assert(ninjas.length === 3, "There are three ninjas"); assert(samurai.length ===2, "And only two samurai"); //通過索引訪問陣列元素,第一個元素的索引是0,最後一個數組的索引是陣列的長度減1. assert(ninjas[0] === "Kuma","Kuma is the first ninja"); assert(samurai[samurai.length - 1] === "Tomoe","Tomoe is the last samurai"); //對超出陣列世界的項,導致undefined。 assert(ninjas[4] === undefined ,"We get undefined if we try to access an out of bounds index"); //對超出陣列邊界的索引寫入元素將擴充陣列。 ninjas[4] = "Ishi"; assert(ninjas.length === 5, "Array are automatically expanded"); //手動修改陣列的length屬性為更小數值,將會刪除多餘的元素。 ninjas.length = 2; assert(ninjas.length ===2, "There are only two ninjas now"); assert(ninjas[0] === "kuma" && ninjas[1] === "Hattori", "Kuma and Hattori"); assert(ninjas[2] === undefined,"But we've lost Yagyu"); </script> </html>
本例子中引入的js: test.js
在本例子中,建立了兩個陣列,通過陣列字面量建立陣列ninja:
const ninjas = ["Kuma","Hattori","Yagyu"];
陣列ninjas中立即填充3個元素:Kuma,Hattori和Yagyu。陣列samurai通過內建的Array建構函式建立:
const samurai = new Array("Oda","Tomoe");
提示: 使用陣列字面量建立優於陣列建構函式。主要原因很簡單[]與 new Array()(2個字元與11個字元(包含空格))。此外,由於javascript的高度動態特性,無法阻止修改內建的Array建構函式, 也就意味者new Array()建立的不一定是陣列。因此推薦使用陣列字面量。
無論使用哪種方式建立陣列,每個陣列都具有length屬性,表示陣列的長度。例如:陣列ninjas的長度是3,包含3個“忍者”。我們可以這樣驗證:
assert(ninjas.length===3,"There are three ninjas");
assert(samurai.length===2,"And only two samurai");
通過使用索引訪問陣列元素,第1個元素的索引是0,最後一個數組的索引是陣列長度減1。但是如果檢視訪問陣列長度範圍之外的索引,例如ninjas[4],而ninjas的長度是3,
它不會像其他語言那樣丟擲異常,而是返回undefined。
另一方面,若在陣列邊界之外寫入元素寫入元素,例如:
ninjas[4] = "Ishi";
陣列將會擴大以適應新的形勢。
與其他大多數語言不同,javaScript在length屬性上,也表現出一種特殊的功能:可以手動修改length屬性的值;將length值改為比原有值大的數,陣列會被擴充套件,新擴展出的元素均為undefined;
將length改為比原有值小的數,陣列會被裁剪。