1. 程式人生 > 實用技巧 >處理集合_建立陣列_1

處理集合_建立陣列_1


 <!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改為比原有值小的數,陣列會被裁剪。