引用類型—Array類型

ECMAScript數(shù)組與其它語言數(shù)組一樣右蹦,都是數(shù)據(jù)的有序列表昨悼。但是ECMAScript數(shù)組的每一項(xiàng)可以保存任何類型的數(shù)據(jù)收壕。而且妓灌,ECMAScript數(shù)組是可以動(dòng)態(tài)調(diào)整的。
1.創(chuàng)建和修改數(shù)組
·創(chuàng)建數(shù)組

1 var colors=new Array(20); //創(chuàng)建長度位20的數(shù)組
2 var colors=Array(20); //可以省略new操作符
3 var colors=Array("red","blue","green");
4
5 //數(shù)組字面量表示法
6 var colors=["red","blue","green"];
7 var values=[1,2,3];

.修改數(shù)組

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

·數(shù)組的length活用
數(shù)組的length不是只讀的蜜宪,重新設(shè)置length可以移出項(xiàng)虫埂,修改項(xiàng),新增項(xiàng)圃验,修改數(shù)組的長度掉伏。
2.檢測數(shù)組----Array.isArray()
3.轉(zhuǎn)換方法******
toString():返回以逗號(hào)隔開的字符串 丨 valueOf():返回的是數(shù)組 丨 alert():會(huì)在后臺(tái)調(diào)用toString()方法,而不是toLocaleString()方法 丨 join():參數(shù)是符號(hào)澳窑,此符號(hào)將代替逗號(hào)隔開字符串
4.
棧方法和隊(duì)列方法**
棧方法:push():在末尾添加 pop():獲得最后一項(xiàng)并移除
隊(duì)列方法:shift():在首項(xiàng)移除 unshift():在首項(xiàng)添加
5.數(shù)組重排序
reverse()方法:反轉(zhuǎn)數(shù)組的順序 丨 sort()方法:按照傳入的函數(shù)重新排序
比較函數(shù):

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

6.操作方法
concat():先復(fù)制已有的數(shù)組岖免,然后將參數(shù)添加到副本的末尾,如果參數(shù)是值照捡,則直接添加颅湘,如果參數(shù)是數(shù)組,則將每一項(xiàng)都添加到副本的末尾栗精。往一個(gè)數(shù)組后面加很多項(xiàng)用此方法闯参。

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():從原數(shù)組中截取某一部分用此方法

1 var colors=["red","blue","green","black","yellow"];
2 var colors2=colors.slice(1); //從第二個(gè)數(shù)到最后
3 var colors3=colors.slice(1,4); //從第二個(gè)數(shù)到第五個(gè)數(shù),但是不包括第五個(gè)數(shù)
4 alert(colors2); //blue,green,black,yellow
5 alert(colors3); //blue,green,black
6 //如果參數(shù)里有負(fù)數(shù)悲立,則用數(shù)組長度加上該數(shù)來確定相應(yīng)的位置

splice():最強(qiáng)大的數(shù)組操作方法

 1 /*spice()方法是最強(qiáng)大的數(shù)組方法鹿寨,它有三個(gè)參數(shù) ,依次為起始位置薪夕,要?jiǎng)h除的項(xiàng)數(shù)脚草,要添加的項(xiàng)*/
 2 var colors=["red","green","blue"];
 3 var removed=colors.splice(0,1); /*刪除第一行*/
 4 alert(colors); /*green,blue*/
 5 alert(removed); /*red,返回的數(shù)組中只包含一項(xiàng),即刪除的那一項(xiàng)*/
 6
 7 removed=colors.splice(1,0,"yellow","orannge"); //從位置一開始插入兩項(xiàng) 
 8 alert(colors); //green,yellow,orange,blue注意原献,yellow在位置1
 9 alert(removed); //返回的是一個(gè)空數(shù)組
 10 
 11 removed=colors.splice(1,1,"red","purple"); //插入兩項(xiàng)馏慨,刪除一項(xiàng)
 12 alert(colors); //green,red,purple,orange,blue
 13 alert(removed); //yellow,返回的數(shù)組中只包含一項(xiàng)
 14 /*注意,splice()返回的是刪除的項(xiàng)姑隅,而不是改變后的原數(shù)組*/

7.迭代方法
every():每一項(xiàng)運(yùn)行函數(shù)写隶,只有每一項(xiàng)都返回true,最后才返回true
some():每一項(xiàng)都運(yùn)行函數(shù)讲仰,任一項(xiàng)返回true最后就會(huì)返回true
forEach():不會(huì)返回值慕趴,作用其實(shí)和for循環(huán)一樣
filter():每一項(xiàng)運(yùn)行函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組
map():每一項(xiàng)都運(yùn)行函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組

1 /*every()和some()返回true或者false冕房,不同的是躏啰,運(yùn)行函數(shù),every要求函數(shù)對(duì)每一項(xiàng)都返回true才會(huì)返回true耙册,而some只要求任一項(xiàng)返回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()每一項(xiàng)運(yùn)行函數(shù)给僵,返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組*/
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()不返回值,作用其實(shí)for循環(huán)一樣*/
22
23 /*map()方法:每一項(xiàng)運(yùn)行函數(shù)觅玻,返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組*/
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()方法都會(huì)迭代數(shù)組的每一項(xiàng)想际,然后構(gòu)建一個(gè)最終返回的值。reduce()正序溪厘,reduceRight()逆序胡本。這兩個(gè)方法都接收兩個(gè)參數(shù):在每一項(xiàng)上調(diào)用的函數(shù)和最為歸并的初始值。而這個(gè)函數(shù)接收4個(gè)參數(shù)
前一個(gè)值畸悬,當(dāng)前值侧甫,項(xiàng)的索引和數(shù)組對(duì)象。這個(gè)函數(shù)返回的任何值都會(huì)作為一個(gè)參數(shù)返回給下一項(xiàng)蹋宦。第一次迭代發(fā)生在數(shù)組的第二項(xiàng)披粟,因此,第一個(gè)參數(shù)是數(shù)組的第一項(xiàng)冷冗,第二個(gè)參數(shù)是數(shù)組的第二項(xiàng)守屉。

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 /*這兩個(gè)方法都接收兩個(gè)參數(shù):一個(gè)在每一項(xiàng)上調(diào)用的函數(shù)和(可選)作為歸并基礎(chǔ)的初始值。傳給reduce()和reduceRight()的函數(shù)接收4個(gè)參數(shù)
7  前一個(gè)值蒿辙,當(dāng)前值拇泛,項(xiàng)的索引和數(shù)組對(duì)象。這個(gè)函數(shù)返回的任何值都會(huì)作為第一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng)思灌。第一次迭代發(fā)生在數(shù)組的第二項(xiàng)俺叭。因此第一個(gè)參數(shù)是數(shù)組的第一項(xiàng)8  第二個(gè)參數(shù)是數(shù)組的第二項(xiàng)。
9  * */

9.位置方法
indexOf():正序索引 lastIndexOf():逆序索引 在比較參數(shù)和數(shù)組中的項(xiàng)時(shí)泰偿,必須嚴(yán)格相等熄守,相當(dāng)于使用===操作符,沒有找到返回-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 從第五的數(shù)開始往后檢索耗跛,所以第一個(gè)4并沒有被檢索到 
6 alert(numbers.lastIndexOf(4,4)); //3 從倒數(shù)第五個(gè)數(shù)開始檢索 
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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末裕照,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子课兄,更是在濱河造成了極大的恐慌牍氛,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烟阐,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蜒茄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門唉擂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人檀葛,你說我怎么就攤上這事玩祟。” “怎么了屿聋?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵空扎,是天一觀的道長。 經(jīng)常有香客問我润讥,道長转锈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任楚殿,我火速辦了婚禮撮慨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脆粥。我一直安慰自己砌溺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布变隔。 她就那樣靜靜地躺著规伐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匣缘。 梳的紋絲不亂的頭發(fā)上猖闪,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音孵户,去河邊找鬼萧朝。 笑死,一個(gè)胖子當(dāng)著我的面吹牛夏哭,可吹牛的內(nèi)容都是我干的检柬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼竖配,長吁一口氣:“原來是場噩夢啊……” “哼何址!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起进胯,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤用爪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后胁镐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體偎血,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诸衔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颇玷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笨农。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖帖渠,靈堂內(nèi)的尸體忽然破棺而出谒亦,到底是詐尸還是另有隱情,我是刑警寧澤空郊,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布份招,位于F島的核電站,受9級(jí)特大地震影響狞甚,放射性物質(zhì)發(fā)生泄漏锁摔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一入愧、第九天 我趴在偏房一處隱蔽的房頂上張望鄙漏。 院中可真熱鬧,春花似錦棺蛛、人聲如沸怔蚌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桦踊。三九已至,卻和暖如春终畅,著一層夾襖步出監(jiān)牢的瞬間籍胯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工离福, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杖狼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓妖爷,卻偏偏與公主長得像蝶涩,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子絮识,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容