javascript數組定義、操作

數組創建

  1. var a = new Array()
  2. var b = new Array( 10 )
  3. var c = new Array( “one”, “two”, “three” )
  4. var d = [ 1, 2, 3, 4, 5 ]
  5. var e = [ [ 1,2 ], [ 3, 4 ] ] // 二維數組

關於Array()

new Array()創建的數組,在for循環中length應用有些問題,如下代碼。

var arr = new Array( 10 )
// 不能用 arr.length 作爲for循環判斷條件。瀏覽器會崩潰。
for ( var i = 0; i < arr.length; i ++ ) {
    arr[i] = i
}
console.log(arr)

一個細節:

var arr = new Array( 2 )
     arr[0] = 0
     arr[1] = 1
console.log( arr )  // Array [ 0, 1 ]
console.log( arr.length )  // 2

var arr = new Array( 2 )
    arr.push( 0 )
    arr.push( 1 )
console.log( arr )    // Array [ <2 個空的存儲位置>, 0, 1 ]        
console.log( arr.length ) // 4

注意:兩個輸出結果,是不相同的,原因是當你在Array()括號內輸入2後,系統自動會給它分配兩個空間。而push是在數組結尾插入元素,相當於arr[0],arr[1]分配了空間但是沒有元素,是兩個空元素,所以第二種結果不同於第一種。

引用別人的話: Array只有一個屬性,就是length,length表示的是數組所佔內存空間的數目,而不僅僅是數組中元素的個數。

    var arr = new Array ( "one", "two", "three" )  
    arr[5] = "five"  
    console.log( arr )  // Array [ " one ", " two", " three", <2 個空的存儲位置>, "five" ]
    console.log( arr.length )  // 6

Array的length

 var arr = new Array ( "one" , "two" , "three" )  
    delete arr[1]  
    console.log( arr.length )  
    console.log( arr )  // Array [ "one", <1 個空的存儲位置>, "three" ]
    //顯示的結果是3,說明即使刪除也無法改變數組的長度  
var arr = new Array ( "one" , "two" , "three" )           
    arr.length = 1
console.log( arr.length )  // 1
console.log( arr )  // Array [ "one" ]

數組的操作方法

一、添加元素

1、 push() 在數組末尾添加一個或多個元素。

(1) push() 方法直接修改 arrayObject,而不是創建一個新的數組。push() 方法和 pop() 方法使用數組提供的先進後出棧的功能。

(2) 該方法會改變數組的長度。

    var arr = [ 1, 3, 5, 6 ]
    arr.push( "a", "b", "c" )
    console.log( arr.push( 7 ) )  //8
    //push()方法返回的是新的數組的長度。
    console.log( arr )  // Array [ 1, 3, 5, 6, "a", "b", "c", 7 ]

2、unshift() 在數組前端添加一個或多個元素。

(1) unshift() 方法不創建新的創建,而是直接修改原有的數組。

(2) 該方法會改變數組的長度。

var arr = [ 1, 3, 5, 6 ]
arr.unshift( "a", "b", "c" )
console.log( arr.unshift( 7 )  // 8
// unshift()方法返回的是新的數組的長度。
console.log( arr )  // Array [ 7, "a", "b", "c", 1, 3, 5, 6 ]

3、splice( index, howmany, items ) 添加/刪除元素,然後返回被刪除的項目。index數組索引,爲負值時從數據結尾添加;howmany刪除的個數(刪除從數據結尾開始,先添加後刪除),0代表不刪除;items要添加的元素(可選)。

(1) 該方法會改變原始數組。

(2) splice() 方法與 slice() 方法的作用是不同的,splice() 方法會直接對數組進行修改。

var arr = [ 1, 3, 5, 6 ]
arr.splice( 1, 1, "a", "b", "c" )
console.log( arr )  // Array [ 1, "a", "b", "c", 5, 6 ]

// arr.splice( 1, 2 )
// console.log( arr )  // Array [ 1, 6 ]

// arr.splice( 1, 0, "a", "b", "c" )
// console.log( arr )  // Array [ 1, "a", "b", "c", 3, 5, 6 ]

二、刪除元素

1、 pop() 方法用於刪除並返回數組的最後一個元素。

    var arr = [ 1, 3, 5, 6 ]
    console.log( arr.pop() )  // 6
    console.log( arr )  // Array [ 1, 3, 5 ]

2、shift() 方法用於把數組的第一個元素從其中刪除,並返回第一個元素的值。

如果數組是空的,那麼 shift() 方法將不進行任何操作,返回 undefined 值。請注意,該方法不創建新數組,而是直接修改原有的 arrayObject。

    var arr = [ 1, 3, 5, 6 ]
    console.log( arr.shift() )  // 1
    console.log( arr )  // Array [ 3, 5, 6 ]

3、splice() 如上。

三、連接數組

1、arr.concat( arr1 )

            var arr = new Array( 3 )
            arr[ 0 ] = 0
            arr[ 1 ] = 1
            arr[ 2 ] = 2

            var arr2 = new Array( 3 )
            arr2[ 0 ] = 3
            arr2[ 1 ] = 4
            arr2[ 2 ] = 5

            console.log( arr.concat( arr2 ) )  //Array [ 0, 1, 2, 3, 4, 5 ]

            var arr = [ 1, 2, 3, 4, 5 ]
            var arr2 = [ "a", "b", "c", "d", "e" ]
            var arr3 = [ 7, 8, [ 9, 10 ] ]
            console.log( arr.concat( arr2 ) )  //Array [ 1, 2, 3, 4, 5, "a", "b", "c", "d", "e" ] 
            //不能解析二維數組。
            console.log( arr.concat( arr3 ) ) //Array [ 1, 2, 3, 4, 5, 7, 8, Array[2] ]

四、轉化數組

1、toString() 把數組轉換成一個字符串,並返回結果。

            var arr = [ 1, 3, 5, 6 ]
            console.log( arr.toString() )  //1,3,5,6

2、join( saparator ) 該參數設置分隔符。 用於把數組中的所有元素放入一個字符串。元素是通過指定的分隔符進行分隔的。

            var arr = [ 1, 3, 5, 6 ]
            console.log( arr.join( "、" ) ) //1、3、5、6

3、 toLocaleString() 把數組轉換成一個字符串。

            var arr = [ "a", "b", "c", "d" ]
            console.log( arr.toString() )   //a,b,c,d
            console.log( arr.toLocaleString() )  //a,b,c,d

4、解析多維。

                var arr = new Array ( 1, 2, 3, [ 4, 5, [ 6, 7 ] ] )  
                var b = arr.toString () 
                var arr1 = new Array ( 1, 2, 3, [ 4, 5, [ 6, 7 ] ] )  
                var d = arr1.toLocaleString () 
                //toString()方法和toLocaleString()方法都可以拆解多維數組  
                console.log( b )  //1,2,3,4,5,6,7
                console.log( d )   //1,2,3,4,5,6,7

toString() 方法,toLocaleString()方法的作用類似,firefox下的作用是完全相同的,IE的話如果元素是字符串,會在“,”後 面加上一個空格,如果元素是數字,會擴展到兩位小數,兩者都會改變字符串的length屬性,所以考慮到兼容性,儘量不要使用 toLocaleString()方法。

五、數組排序

1、sort() 方法用於對數組的元素進行排序。arrayObject.sort( sortby ) 該參數:可選,規定排序順序,必須是函數。

對數組的引用,請注意,數組在原數組上進行排序,不生成副本。

注意:

  1. 如果調用該方法時沒有使用參數,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(如有必要),以便進行比較。

  2. 如果想按照其他標準進行排序,就需要提供比較函數,該函數要比較兩個值,然後返回一個用於說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a 和 b,其返回值如下:

    若 a 小於 b,在排序後的數組中 a 應該出現在 b 之前,則返回一個小於 0 的值。
    若 a 等於 b,則返回 0。
    若 a 大於 b,則返回一個大於 0 的值。

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "<br />")
document.write(arr.sort())

輸出:

10,5,40,25,1000,1
1,10,1000,25,40,5

// 請注意,上面的代碼沒有按照數值的大小對數字進行排序,要實現這一點,就必須使用一個排序函數:

function sortNumber(a,b)
{
return a - b
}

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "<br />")
document.write(arr.sort(sortNumber))

輸出:

10,5,40,25,1000,1
1,5,10,25,40,1000

六、選擇數組元素

1、slice( start, end ) 方法可從已有的數組中返回選定的元素。

參數說明:

  1. start必需。規定從何處開始選取。如果是負數,那麼它規定從數組尾部開始算起的位置。也就是說,-1 指最後一個元素,-2 指倒數第二個元素,以此類推。

  2. end可選。規定從何處結束選取。該參數是數組片斷結束處的數組下標。如果沒有指定該參數,那麼切分的數組包含從 start 到數組結束的所有元素。如果這個參數是負數,那麼它規定的是從數組尾部開始算起的元素。

請注意,該方法並不會修改數組,而是返回一個子數組。如果想刪除數組中的一段元素,應該使用方法 Array.splice()。

            var arr = [ "a", "b", "c", "d" ]
            console.log( arr.slice( 1,3 ) )
            // 結果是Array [ "b", "c" ] 。以索引的前邊爲準。
var arr6 = [3,5,7,8,0];
var str5 = "hello world";
console.log(str5.slice(1,4));  // ell
console.log(arr6.slice(1,3));  // [5,7]

七、顛倒數組

1、reverse() 方法用於顛倒數組中元素的順序,該方法會改變原來的數組,而不會創建新的數組。

            var arr = [ "a", "b", "c", "d" ]
            console.log( arr.reverse() )  // Array [ "d", "c", "b", "a" ]

八、清除數組

1、splice()

    var arr = [ 1, 2, 3, 4 ];  
    arr.splice( 0, arr.length );  
    console.log( arr ); // Array [  ]

2、給length賦值

    arr = [ 1, 2, 3, 4 ];  
    arr.length = 0; 
    console.log( arr ) //Array [  ]
    // 目前 Prototype中數組的 clear 方法和mootools庫中數組的 empty 方法使用這種方式清空數組,保留了數組其它屬性。

3、賦值爲[]

    arr = [ 1, 2, 3, 4 ];  
    arr = []
    console.log( arr )  // Array [  ]
    // 未保留屬性,效率高於第二種方式。

平臺:firefox 時間:2016.8.19

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章