引用類型之Array類型

Array類型數組

ECMAScript數組與其它語言數組同樣,都是數據的有序列表。可是ECMAScript數組的每一項能夠保存任何類型的數據。並且,ECMAScript數組是能夠動態調整的。函數

1.建立和修改數組spa

·建立數組code

1 var colors=new Array(20);      //建立長度位20的數組
2 var colors=Array(20);             //能夠省略new操做符
3 var colors=Array("red","blue","green");
4 
5 //數組字面量表示法
6 var colors=["red","blue","green"];
7 var values=[1,2,3];

 ·修改數組對象

1 var colors=["red","blue","green"];
2 alert(colors[0]);                                 //顯示第一項
3 colors[2]="black";                             //修改第三項
4 colors[3]="brown";                           //新增第四項

·數組的length活用blog

數組的length不是隻讀的,從新設置length能夠移出項,修改項,新增項,修改數組的長度。排序

2.檢測數組----Array.isArray()索引

3.轉換方法
隊列

toString():返回以逗號隔開的字符串     丨     valueOf():返回的是數組       丨      alert():會在後臺調用toString()方法,而不是toLocaleString()方法     丨      join():參數是符號,此符號將代替逗號隔開字符串ip

4.棧方法和隊列方法

棧方法:push():在末尾添加      pop():得到最後一項並移除

隊列方法:shift():在首項移除       unshift():在首項添加

5.數組重排序

reverse()方法:反轉數組的順序     丨     sort()方法:按照傳入的函數從新排序

比較函數:

1 function compare(value1,value2){
2 return value2-value1;
3 };

6.操做方法 

concat():先複製已有的數組,而後將參數添加到副本的末尾,若是參數是值,則直接添加,若是參數是數組,則將每一項都添加到副本的末尾。往一個數組後面加不少項用此方法。

1 var colors=["red","green","blue"];
2 var colors2=colors.concat("yellow",["black","brown"]);
3 alert(colors);                                            //red,green,blue
4 alert(colors2);                                           //red,green,blue,yellow,black,brown

slice():從原數組中截取某一部分用此方法

1 var colors=["red","blue","green","black","yellow"];
2 var colors2=colors.slice(1);                        //從第二個數到最後
3 var colors3=colors.slice(1,4);                      //從第二個數到第五個數,可是不包括第五個數
4 alert(colors2);                                     //blue,green,black,yellow
5 alert(colors3);                                     //blue,green,black
6                                                     //若是參數裏有負數,則用數組長度加上該數來肯定相應的位置

splice():最強大的數組操做方法

 1 /*spice()方法是最強大的數組方法,它有三個參數 ,依次爲起始位置,要刪除的項數,要添加的項*/
 2 var colors=["red","green","blue"];
 3 var removed=colors.splice(0,1);                        /*刪除第一行*/
 4 alert(colors);                                         /*green,blue*/
 5 alert(removed);                                        /*red,返回的數組中只包含一項,即刪除的那一項*/
 6 
 7 removed=colors.splice(1,0,"yellow","orannge");        //從位置一開始插入兩項
 8 alert(colors);                                        //green,yellow,orange,blue注意,yellow在位置1
 9 alert(removed);                                       //返回的是一個空數組
10 
11 removed=colors.splice(1,1,"red","purple");            //插入兩項,刪除一項
12 alert(colors);                                        //green,red,purple,orange,blue
13 alert(removed);                                       //yellow,返回的數組中只包含一項
14 /*注意,splice()返回的是刪除的項,而不是改變後的原數組*/

 7.迭代方法

every():每一項運行函數,只有每一項都返回true,最後才返回true

some():每一項都運行函數,任一項返回true最後就會返回true

forEach():不會返回值,做用其實和for循環同樣

filter():每一項運行函數,返回該函數會返回true的項組成的數組

map():每一項都運行函數,返回每次函數調用的結果組成的數組

 1 /*every()和some()返回true或者false,不一樣的是,運行函數,every要求函數對每一項都返回true纔會返回true,而some只要求任一項返回true就返回true*/
 2 var numbers=[1,2,3,4,5,4,3,2,1];
 3 
 4 var everyResult=numbers.every(function(item,index,array){
 5     return(item>2);
 6 });
 7 alert(everyResult);            //false
 8 
 9 var someResult=numbers.some(function(item,index,array){
10     return(item>2);
11 });
12 alert(someResult);             //true
13 
14 /*filter()每一項運行函數,返回該函數會返回true的項組成的數組*/
15 var numbers=[1,2,3,4,5,4,3,2,1];
16 var filterResult=numbers.filter(function(item,index,array){
17     return(item>2);
18 });
19 alert(filterResult);           //[3,4,5,4,3]
20 
21 /*forEach()不返回值,做用其實for循環同樣*/
22 
23 /*map()方法:每一項運行函數,返回每次函數調用的結果組成的數組*/
24 var numbers=[1,2,3,4,5,4,3,2,1];
25 var mapNumbers=numbers.map(function(item,index,array){
26     return item*2;
27 });
28 alert(mapNumbers);             //2,4,6,8,10,8,6,4,2

 

8.歸併方法

reduce()和reduceRight()方法都會迭代數組的每一項,而後構建一個最終返回的值。reduce()正序,reduceRight()逆序。這兩個方法都接收兩個參數:在每一項上調用的函數和最爲歸併的初始值。而這個函數接收4個參數

前一個值,當前值,項的索引和數組對象。這個函數返回的任何值都會做爲一個參數返回給下一項。第一次迭代發生在數組的第二項,所以,第一個參數是數組的第一項,第二個參數是數組的第二項。

1 var values=[1,2,3,4,5];
2 var sum=values.reduce(function(prev,cut,index,array){
3     return prev+cut;
4 },5);
5 alert(sum);          //20
6 /*這兩個方法都接收兩個參數:一個在每一項上調用的函數和(可選)做爲歸併基礎的初始值。傳給reduce()和reduceRight()的函數接收4個參數
7  前一個值,當前值,項的索引和數組對象。這個函數返回的任何值都會做爲第一個參數自動傳給下一項。第一次迭代發生在數組的第二項。所以第一個參數是數組的第一項
8  第二個參數是數組的第二項。
9  * */

 

9.位置方法

indexOf():正序索引          lastIndexOf():逆序索引          在比較參數和數組中的項時,必須嚴格相等,至關於使用===操做符,沒有找到返回-1

 1 var numbers=[1,2,3,4,5,4,3,2,1];
 2 alert(numbers.indexOf(4));                 //3
 3 alert(numbers.lastIndexOf(4));              //5
 4 
 5 alert(numbers.indexOf(4,4));               //5  從第五的數開始日後檢索,因此第一個4並無被檢索到
 6 alert(numbers.lastIndexOf(4,4));           //3  從倒數第五個數開始檢索
 7 
 8 var person={name:"Nicholas"};
 9 var people=[{name:"Nicholas"}];
10 
11 var morePeople=[person];
12 
13 alert(people.indexOf(person));            //-1
14 alert(morePeople.indexOf(person));          //0
相關文章
相關標籤/搜索