**何為數組:**
所謂數組,就是相同數據類型的元素按一定順序排列的[集合](http://baike.baidu.com/subview/15216/10703233.htm),就是把有限個類型相同的變量用一個名字命名,然后用編號區分他們的變量的集合,這個名字稱為數組名,編號稱為[下標](http://baike.baidu.com/view/729047.htm)。組成數組的各個變量稱為數組的分量,也稱為數組的元素,有時也稱為下標變量。數組是在程序設計中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來的一種形式。這些按序排列的同類數據元素的集合稱為數組。

在JS中除了Object類型以為,我們用的最多的應該就是數組了。而且JS數組和其他大多數語言中的數組有著很大的區別。在Java語言中,我們聲明了一個數組,那么這個數組只能保存相同類型的值,集合數組也是一樣;而在我們的JS數組中的每一項都可以保存任何數據,也就是說我們的JS數組第一個位置可以用來保存字符串,第二個位置可以用來保存數值,第三個位置可以用來保存對象。并且JS的數組是動態調整的,有點類似于Java的集合數組(List);會隨著數據的增加而擴大數組的容量;
**1、數組的創建**
~~~
var array = new Array(); //創建一個數組
<span style="white-space:pre"> </span>var array = new Array([2]); //創建一個數組并指定長度,注意不是上限,是長度
var array = new Array([1,'字符串',new Object()]); //創建一個數組并賦值,對應的是數字,字符串,對象
alert(array);
~~~
**2.檢測數組**
~~~
array instanceof Array; //返回結果為布爾值
Array.isArray(array); //返回結果為布爾值,只支持IE9,谷歌,火狐能
~~~
**3.數組的轉換**
~~~
var person1={
toLocaleString :function(){
return "Nikolaos";
},
toString:function(){
return "NiCholas";
}
};
var person2= {
toLocaleString :function(){
return "Grigorios";
},
toString:function(){
return "Greg";
}
};
var people=[person1,person2];
alert(people);
alert(people.toString());
alert(people.toLocaleString());
~~~
數組轉換成字符串可以使用toStirng,valueOf,toLocaleString,Join;
**4操作方法**
**4.1數組的元素的訪問**
| `1` | `var`?`testGetArrValue=arrayObj[1];?``//獲取數組的元素值` |
|-----|-----|
| `2` | ? |
|-----|-----|
| `3` | `arrayObj[1]=?``"這是新值"``;?``//給數組元素賦予新的值` |
|-----|-----|
**4.2數組元素的添加**
| `1` | `arrayObj. push([item1 [item2 [. . . [itemN ]]]]);``// 將一個或多個新元素添加到數組結尾,并返回數組新長度` |
|-----|-----|
| `2` | ? |
|-----|-----|
| `3` | `arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);``// 將一個或多個新元素添加到數組開始,數組中的元素自動后移,返回數組新長度` |
|-----|-----|
| `4` | ? |
|-----|-----|
| `5` | `arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);``//將一個或多個新元素插入到數組的指定位置,插入位置的元素自動后移,返回""。` |
|-----|-----|
**4.3數組元素的刪除**
| `1` | `arrayObj.pop();?``//移除最后一個元素并返回該元素值` |
|-----|-----|
| `2` | ? |
|-----|-----|
| `3` | `arrayObj.shift();?``//移除最前一個元素并返回該元素值,數組中元素自動前移` |
|-----|-----|
| `4` | ? |
|-----|-----|
| `5` | `arrayObj.splice(deletePos,deleteCount);?``//刪除從指定位置deletePos開始的指定數量deleteCount的元素,數組形式返回所移除的元素` |
|-----|-----|
**4.4數組的截取和合并**
| `1` | `arrayObj.slice(start, [end]);?``//以數組的形式返回數組的一部分,注意不包括 end 對應的元素,如果省略 end 將復制 start 之后的所有元素` |
|-----|-----|
| `2` | ? |
|-----|-----|
| `3` | `arrayObj.concat([item1[, item2[, . . . [,itemN]]]]);?``//將多個數組(也可以是字符串,或者是數組和字符串的混合)連接為一個數組,返回連接好的新的數組` |
|-----|-----|
**5.棧方法**
JS數組也提供了一種讓數組的行為類似于其他數據結構的方法,數組表現的就像棧一樣。棧是一種可以限制插入和刪除項,后進先出的數據結構,也就是最新添加的項最早被移除。而棧中項的插入(推入)和移除(彈出)。只發生在棧頂。JS為數組專門提供了push()和pop()方法,以便實現類似棧的行為;
~~~
var names=["張三","李四"];
names.push("王五"); //添加另一項
names[3]="趙六" //添加一項
alert(names.length); //4
var item=names.pop(); //去的最后一項
alert(item);
~~~
**6.隊列方法**
棧數據結構的訪問規則是后進先出,而隊列的數據結構的訪問規則是先進先出。隊列在列表的末端添加項,從列表的前端移除項。
~~~
var names=["張三","李四"];
names.push("王五"); //添加另一項
names[3]="趙六" //添加一項
alert(names.length); //4
var item=names.shift(); //取得第一項
alert(item);
~~~
**7.重排序方法**
~~~
var values=[4,2,5,7,1];
alert(values.sort()); //sort正序
alert(values.reverse()); //reverse倒序
~~~
**8.位置方法**
位置方法splice()方法,這個方法是最強大的數組方法了,它有很多種用法。splice()的主要用途是向數組的中部插入項,但使用這種方法的方式有三種;
刪除:可以刪除任意數量的項,只需指定2個參數:要刪除的起始位置和要刪除的項數,例如?
splice(0,2)會刪除數組中的前兩項
插入:可以向指定位置插入任意數量的項,只需提供3個參數,起始位置0(要刪除的項數)和要插入的項,如果要插入多個項,可以再傳入第四,第五,以致任意多個項,例如splice(2,0,"張三三","李四四")會從當前數組的位置2開始插入
替換:可以向指定位置插入任意數量的項,且同時刪除任意數量的項,只需指定3個參數:起始位置,要刪除的項數和要插入的任意數量的項,插入的項數不必與刪除的項數相等。例如splice(2,1,"張三三","李四四")會刪除當前數組位置2的項,然后再從位置2開始插入字符串;
后面還有更深入的迭代和縮小方法,留著下次討論;
- 前言
- javascript基礎與定義
- JavaScript變量
- JavaScript變量二(數據類型,Number,String,Object)
- JavaScript傳參的問題
- JavaScript基本類型和引用類型的值
- JavaScript執行環境及作用域
- JavaScript垃圾收集
- JavaScript和JQuery和angularjs操作select
- 搞對象前,你得先有對象
- JavaScript數組
- JavaScript運行原理解析
- Jquery和angularjs獲取check框選中的值小技巧
- JavaScript函數表達式
- JavaScript的閉包理解
- JavaScript BOM
- JavaScritpt的DOM初探之Node(一)
- 為什么說DOM操作很慢
- jQuery性能優化