今天講js的陣列。陣列是js中最基礎的資料結構了。

  主要講講陣列實現棧,佇列以及其他的基本操作。棧和佇列都可以在陣列頭尾位置處理,所以,都有兩種方式。

  屬性

  1、length : 長度,表示陣列元素的個數。

  方法

  1、實現棧,先進後出。注意,下面兩組是配對出現

    入棧:Array.unshift(obj) 在陣列第一個元素插入資料

    出棧:obj = Array.shift() 取出第一個元素,返回第一個元素後,刪除第一個元素

-------------我是華麗的分割線------------------------------

    入棧:Array.push(obj) 在陣列尾部新增一個元素

    出棧:obj.pop() 在陣列尾部取出一個元素

  2、實現佇列,先進先出。

    入隊:Array.push(obj) 在陣列尾部新增一個元素

    出隊:obj = Array.shift() 取出第一個元素

-------------我是華麗的分割線------------------------------

    入隊:Array.unshift(obj) 從陣列頭插入一個元素

    出隊:obj = Array.pop() 從陣列尾部取出一個元素

  3、拼接陣列,array = Array.concat(array,array,,,)

    all = array1.concat(array2,array3,,,,,,),將array2的頭拼接在array1的尾部,array3拼接在已拼接的array1,array2的後面,舉個栗子。

    

var parents = ["Jani", "Tove"];
var brothers = ["Stale", "Kai Jim", "Borge"];
var children = ["Cecilie", "Lone"];
var family = parents.concat(brothers, children);
console.log(family) //輸出Jani,Tove,Stale,Kai Jim,Borge,Cecilie,Lone

  4、將陣列轉換成字串。string = Array.join()

    join()會返回一個字串,並且,原先數組裡面的元素用','隔開。舉個栗子。

var parents = ["Jani", "Tove"];
str = parents.join() // 'Jani,Tove'

  所以這樣很適合分割和合成。

  5、隨意複製陣列,array = Array.slice(startAt, endAt)

    這裡有亮點,所以用粗體,同學們細心了。注意區分 不傳引數,傳入一個引數,傳入兩個引數,還有出入正負數的區別。

    5.1 陣列深度複製看栗子

    

var arr = ['aa','bb','cc']
var arr2 = arr;
arr2.pop();
console.log(arr)//輸出['aa','bb']這是因為arr2 和 arr指向同一個地址 arr == arr2; // true //深度複製的話醬紫做或者醬紫 arr3 = arr.alice(0)
arr3 = arr.slice();//這樣會重新開闢memory,所以arr3的任何操作對arr都沒有影響 arr == arr3; //false

    5.2 從第某個元素開始複製後面所有的元素

    arr = arr2.slice(2);//arr將arr2[2]  -- arr2[arr2.length-1]複製

    arr = arr.slice(-2)// arr 將 arr2[arr2.length-1-2] -- arr2[arr2.length-1]複製,,就是倒數的兩項

    5.3 取陣列的某幾項,且看栗子

    

var a = [1,2,3,4,5];

a.slice(0,3);    // 返回 [1,2,3]

a.slice(3);      // 返回 [4,5]

a.slice(1,-1);   // 返回 [2,3,4]

a.slice(-3,-2);  // 返回 [3]; IE 4存在的Bug: 返回[1,2,3]

  6、隨意改變陣列 array.splice(startAt, removeCount, obj1,obj2,,,,,,)繼續看栗子

var a = [1,2,3,4,5,6,7,8]

a.splice(4);        // 返回 [5,6,7,8]; a is [1,2,3,4]

a.splice(1,2);      // 返回 [2,3]; a is [1,4]

a.splice(1,1);      // Netscape/JavaScript 1.2 返回 4 ,應該返回 [4]

a.splice(1,0,2,3);  // Netscape/JavaScript 1.2 返回 undefined ,應該返回 []
Bug
方法splice()假定在各種情況下均返回一個包含已刪除元素的陣列。
但是,在 Netscape的JavaScript 1.2直譯器中,如果刪除的是單個元素,那麼該方法返回的是元素,而不是包含那個元素的陣列。
如果沒有刪除任何元素,它不是返回一個空陣列,而是什麼都不返回。
只要把語言版本明確地設定為1.2,JavaScript的Netscape實現都有這種bug行為。

  

  每次都晚上寫,一下就晚了。原創作品,轉載請註明出處:http://zhutty.cnblogs.com

  如果你也喜歡與人交流分享,可加群:164858883

  如果我的部落格對你有幫助,不吝捐贈。