JavaScript編程開發教_JS數組。
(1)JS數組是無類型的:數組元素可以是任意類型,並且同一個數組中的不同元素也可能有不同的類型。 (2)JS數組的索引是基於0 的32位數值。 (3)JS數組是動態的,長度會根據需要動態增長或縮減。 (4)JS數組可能是稀疏的:數組元素的索引不一定要連續,他們之間可以有空缺。 (5)JS數組是JS對象的特殊形式。 (6)JS數組繼承自 Array.prototype中的屬性,它定義瞭一套豐富的數組操作方法。
一、創建數組 (1)數組直接量[ ] 如果省略數組直接量中的某個值,省略的元素將被賦予undefined值。 允許有可選的結尾的逗號,故[ , , ]隻有兩個元素而非三個。
(2)構造函數創建數組 var a = new Array(); //空數組 var a = new Array(10); //指定長度為10 var a = new Array(5, 4, 3, 2, 1, "testing, testing"); //指定元素
二、數組元素的讀和寫 使用[ ] 註意:可以使用負數或者非整數來索引數組。這時候,數值轉換成字符串,字符串作為屬性名來用。
三、稀疏數組 四、數組長度length (1)數組長度會自動增加。 (2)設置length屬性為一個小於當前長度的非負整數n時,當前數組中的那些索引值大於或者等於n的元素將從中刪除。 (3)可以使用Object.defineProperty()設置數組的length屬性為隻讀。
五、數組元素的添加和刪除 Array 對象方法
方法 | 描述 |
concat() | 連接兩個或更多的數組,並返回結果。 |
join() | 把數組的所有元素放入一個字符串。元素通過指定的分隔符進行分隔。 |
pop() | 刪除並返回數組的最後一個元素 |
push() | 向數組的末尾添加一個或更多元素,並返回新的長度。 |
reverse() | 顛倒數組中元素的順序。 |
shift() | 刪除並返回數組的第一個元素 |
slice() | 從某個已有的數組返回選定的元素 |
sort() | 對數組的元素進行排序 |
splice() | 刪除元素,並向數組添加新元素。 |
toSource() | 返回該對象的源代碼。 |
toString() | 把數組轉換為字符串,並返回結果。 |
toLocaleString() | 把數組轉換為本地數組,並返回結果。 |
unshift() | 向數組的開頭添加一個或更多元素,並返回新的長度。 |
valueOf() | 返回數組對象的原始值 |
六、數組遍歷 (1)使用優化的for循環 for(var i = 0, len = arr.length; i < len; i++) { //操作 } for(var i = 0, len = arr.length; i < len; i++) { if( !arr[i] ) continue; //跳過null、(undefined和不存在的元素) //循環體 } for(var i = 0, len = arr.length; i < len; i++) { if( arr[i] == undefined ) continue; //跳過(undefined和不存在的元素) //循環體 } for(var i = 0, len = arr.length; i < len; i++) { if( ! (i in arr) ) continue; //跳過 不存在的元素 //循環體 }
(2)使用for/in循環處理稀疏數組。 for(var index in sparseArray) { var value = sparseArray[index]; //此處可以使用索引和值做事情 } 註意:使用for/in循環能夠枚舉繼承的屬性名。‘ 過濾方法: for (var i in a) { if( !a.hasOwnProperty(i)) continue; //跳過繼承的屬性 //循環體 }
(3)使用forEach() var data = [1,2,3,4,5]; var sum = 0; data.forEach(function(x) { sum += x; }); console.log(sum);
七、多維數組 matrix[x][y] 八、數組方法 在Array.prototype中定義瞭一些操作數組的方法,他們可以被任何數組使用。
九、ECMAScript 5中的數組方法 寫在前面:每個方法的第一個參數都是一個函數,函數中最多有三個參數:s數組元素、元素的索引、數組本身。 (1)forEach( ) 從頭至尾遍歷數組,為每個數組元素調用指定的函數。
(2)map() 將調用的數組的每個元素傳遞給指定的函數,並返回一個數組,它包含該函數的返回值。
(3)filter() 該方法返回的數組元素是調用的數組的一個子集。
(4)every()和some() 用來數組的邏輯判定:他們對數組元素應用指定的函數進行判定,返回true或者false。
(5)reduce()和reduceRight() 使用指定的函數將數組元素進行組合,生成單個值。 使用例子??
(6)indexOf()和lastIndexOf() 搜索整個數組中具有給定值的元素,返回找到的第一個元素的索引,如果沒有找到返回-1。 indexOf()正向,lastIndexOf()反向。
十、數組類型 判斷是不是數組的方法: ECMAScript 5 中使用Array.isArray( )判斷。 例子: