5.2 Array類型

第2最常用類型。

特點:

  1. 數(shù)據(jù)的有序列表
  2. 數(shù)據(jù)的每一項可以保存任何類型的數(shù)據(jù)
  3. 數(shù)組的大小可以動態(tài)調(diào)整蹲坷、自動增長

創(chuàng)建方法:

  1. 構造函數(shù)
var colors = new Array();

new 可省略

var colors = new Array(20);
var colors = Array(20);
var colors = new Array("red", "blue", "green");
var colors = Array("red", "blue", "green");
  1. 數(shù)組字面量表示法
var colors = ["red", "blue", "green"];   //創(chuàng)建包含3個字符串的數(shù)組
var names = [];                          //創(chuàng)建空數(shù)組

在使用數(shù)組字面量表示法時邑飒,不會調(diào)用Array構造函數(shù)疙咸。(Firefox3.0及更早版本除外)

注意:

  1. 數(shù)組索引從0開始,最后一項的索引是length-1
  2. 數(shù)組的length屬性——不是只讀的乞旦。so题山,可以通過設置length的值進行數(shù)組的除項&增項

檢測數(shù)組

  1. instanceof 操作符
if (value instanceof Array) {
    //對數(shù)組的操作
}

問題:假定了單一的全局執(zhí)行環(huán)境顶瞳。

  1. Array.isArray() 方法
    不管數(shù)組是在哪個全局執(zhí)行環(huán)境中創(chuàng)建的,確定某個值是否是數(shù)組焰络。
if (Array.isArray(value) {
    //對數(shù)組的操作
}

轉(zhuǎn)換方法

轉(zhuǎn)換方法 說明
toString() 返回由數(shù)組中每個值的字符串形式拼接而成的一個逗號分隔的字符串符喝。
valueOf() (返回值同上) 實際上會調(diào)用數(shù)組每一項的toString() 方法
toLocaleString() 經(jīng)常也會返回與toString() 和 valueOf()的方法的值协饲。但是课蔬,若數(shù)組每一項有toLocaleString() 的方法二跋,將會返回toLocaleString() 的值流昏。
var colors = ["red", "blue", "green"];
alert(colors.toString());             //輸出: red,blue,green
alert(colors.valueOf());              //輸出:red,blue,green
alert(colors);                        //輸出:red,blue,green

toLocaleString()返回的值與toString() 和 valueOf()的方法的值不同的例子:

var person1 = {
    toLocaleString:function() {
        return "張";
    },
    toString:function() {
        return "三";
    }
};

var person2 = {
    toLocaleString:function() {
        return "李";
    },
    toString:function() {
        return "四";
    }
};

var people = [person1, person2];
alert(people);                                     //輸出:三,四
alert(people.toString());                          //輸出:三,四
alert(people.toLocaleString());                    //輸出:張,李

用join() 方法可以替換輸出的連接符:

alert(colors.join("||")                        //輸出: red||blue||green

棧方法

數(shù)組表現(xiàn)的跟棧(LIFO况凉,后進先出)一樣。
ECMAScript為數(shù)組專門提供了push() 和pop() 方法闷营,以便實現(xiàn)類似棧的行為傻盟。

var colors() = ["red", "blue"];
colors.push("brown");
colors[3] = "black";
alert(colors.length);           //4

var item = colors.pop();
alert(item);                    // black

隊列方法

數(shù)組表現(xiàn)的跟隊列(FOFO嫂丙,先進先出)一樣。
push() 和 shift() 實現(xiàn)類似隊列的行為诽表。

var colors = new Array();
var count = colors.push("red", "green");
alert(count);                          //2       數(shù)組:red, green

count = colors.push("black");
alert(count);                         //3       數(shù)組:red, green,black

var item = colors.shift();
alert(item);                           //"red"
alert(colors.length);                  //2       數(shù)組:green,black

總結(jié):實現(xiàn)組數(shù)像棧和隊列一樣的方法

方法名 說明
push() 在數(shù)組的末尾添加任意個項,并返回修改后數(shù)組的長度
pop() 在數(shù)組的末尾移除 最后一個項隅肥,并返回修改后數(shù)組的長度
unshift() 在數(shù)組的前端添加任意個項腥放,并返回修改后數(shù)組的長度
pop() 在數(shù)組的前端移除 第一個項,并返回修改后數(shù)組的長度

重排列方法

方法名 說明
reverse() 直接反轉(zhuǎn)數(shù)組項的順序平痰,并返回數(shù)組
sort() 按升序排列數(shù)組項:小→大伍纫;
調(diào)用每個數(shù)組項的toString()轉(zhuǎn)型方法莹规,比較得到的字符串泌神,以確定排序;
返回排序后的數(shù)組母市。
var values = [5,6,7,1,2,3];
values.reverse();
alert(values);                           //3,2,1,7,6,5

var values2 = [5,6,7,1,2,3];
values2.sort();
alert(values2);                          //1,2,3,5,6,7

values2.reverse();
alert(values2);                          //7,6,5,3,2,1

// but;季谩!7蹬痢8萃臁O晨ā!K阈小V菪稀!F濉Q绞唷!@虐琛U獭<纤 !N床!!
var values3 = [0,1,5,10,15];
values3.sort();
alert(values3);                          //0,1,10,15,5         10位于5前旁趟,不正確
// so ↓
function compare(value1,value2) {
    if (value1<value2) {
        return -1;
    } else if(value1>value2){
        return 1;
    } else {
        return 0;
    }
}

//或者
//function compare(value1,value2) {
//    return value2-value1轻庆;
//}  數(shù)值類型的數(shù)組敛劝,升序

var values4 = [0,1,5,10,15];
values4.sort(compare);
alert(values4);                          //0,1,5,10,15

操作方法

方法名 說明
concat() 將傳遞進來的各個數(shù)組 或值添加到結(jié)果數(shù)組中夸盟,組成一個數(shù)組
slice() 可接受1或2個參數(shù),表示要返回數(shù)組的起始和結(jié)束位置桩砰。slice()不會影響原數(shù)組
splice() 主要用途:向數(shù)組的中部插入項:刪释簿、插庶溶、替換
var colors = ["red","green","blue"];
var colors2 = colors.concat("yellow",["black","brown"]);

alert(colors);                      //red,green,blue
alert(colors2);                     //red,green,blue,yellow,black,brown
var colors = ["red",",green","blue","yellow","purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);

alert(colors2);                      //green,blue,yellow,purple
alert(colors3);                      //green,blue,yellow
var colors = ["red",",green","blue"];

 //參數(shù) → (要刪除的第一項的位置偏螺,要刪除的數(shù)目)
var removed = colors.splice(0,1);          //刪除第1項
alert(colors);                             //green,blue
alert(removed);                            //red,返回的數(shù)組只包含1項

//參數(shù) → (起始位置酿联,0即要刪除的項數(shù)夺巩,要插入的項)
var removed = colors.splice(1,0,"yellow","orange");          //刪除第1項
alert(colors);                             //green,yellow,orange,blue
alert(removed);                            //返回的1個空數(shù)組

//參數(shù) → (起始位置柳譬,要刪除的項數(shù),要插入的任意數(shù)量的項)  插入的項數(shù)不必=刪除的項數(shù)
var removed = colors.splice(1,1,"red","purple");          //刪除第1項
alert(colors);                             //green,red,purple,orange,blue
alert(removed);                            //yellow蹲姐,返回的數(shù)組只包含1項

位置方法

方法名 說明
indexOf() 從頭到后嚴格查找(===)柴墩,沒找到返回-1
lastIndexOf() 從尾到頭嚴格查找(===)凫岖,沒找到返回-1

indexOf()哥放、lastIndexOf() 可有且最多有兩個參數(shù):
eg:

indexOf(searchvalue,fromindex)

searchvalue:需檢索的字符串值。必要踩身。
fromindex:在字符串中開始檢索的位置社露,默認為0「礁耄可選坷备。

var number = [1,2,3,4,5,4,3,2,1];
alert(number,index(4));                       //3
alert(number,lastIndex(4));                   //5
var person = {name:"lc"};
var people = [ {name:"lc"} ];

var morePeople = [person];

alert(people.indexOf(person));              //-1
alert(morePeople.indexOf(person));          //0

迭代方法

不會修改數(shù)組中包含的值.

方法名 說明
every() 對數(shù)組中的每一項運行給定函數(shù)情臭,若該函數(shù)對每一項都返回True俯在,則返回True;
filter() 對數(shù)組中的每一項運行給定函數(shù)鸿摇,若該函數(shù)返回True劈猿,則返回True揪荣;
forEach() 對數(shù)組中的每一項運行給定函數(shù)。返回值佛舱。
map() 對數(shù)組中的每一項運行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組订歪。
some() 對數(shù)組中的每一項運行給定函數(shù)刷晋,若該函數(shù)對任一項都返回True慎陵,則返回True;
var numbers = [1,2,3,4,5,4,3,2,1];

var everyResult = numbers.every(function(item, index, array) {
    return (item>2);
})
alert(everyResult);                                          //False

var someResult = numbers.every(function(item, index, array) {
    return (item>2);
})
alert(someResult);                                           //True

var filterResult = numbers.every(function(item, index, array) {
    return (item>2);
})
alert(filterResult);                                          //[3,4,5,4,3]

var mapResult = numbers.every(function(item, index, array) {
    return (item*2);
})
alert(mapResult);                                             //[2,4,6,8,10,8,6,4,2]

 numbers.forEach(function(item, index, array) {
    //執(zhí)行某些操作
})

縮小方法

方法名 說明
reduce() 迭代數(shù)組的所有項構建一個最終返回的值。方向:頭→尾
reduceRight() 迭代數(shù)組的所有項構建一個最終返回的值邮破。方向:尾→頭
var values = [1,2,3,4,5];
var result = values.reduce(function(prev, cur, index, array) {
    return prev - cur;
});
alert(result);    // 1-2-3-4-5 = -13

var result2 = values.reduceRight(function(prev, cur, index, array) {
    return prev - cur;
});
alert(result2);  //5-4-3-2-1 = -5
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仆救,一起剝皮案震驚了整個濱河市抒和,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌彤蔽,老刑警劉巖摧莽,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異顿痪,居然都是意外死亡镊辕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門蚁袭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來征懈,“玉大人揩悄,你說我怎么就攤上這事卖哎。” “怎么了删性?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵亏娜,是天一觀的道長。 經(jīng)常有香客問我蹬挺,道長维贺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任巴帮,我火速辦了婚禮溯泣,結(jié)果婚禮上虐秋,老公的妹妹穿的比我還像新娘。我一直安慰自己垃沦,他們只是感情好客给,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著栏尚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪只恨。 梳的紋絲不亂的頭發(fā)上译仗,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音官觅,去河邊找鬼纵菌。 笑死,一個胖子當著我的面吹牛休涤,可吹牛的內(nèi)容都是我干的咱圆。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼功氨,長吁一口氣:“原來是場噩夢啊……” “哼序苏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起捷凄,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤忱详,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后跺涤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匈睁,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年桶错,在試婚紗的時候發(fā)現(xiàn)自己被綠了航唆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡院刁,死狀恐怖糯钙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情退腥,我是刑警寧澤超营,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站阅虫,受9級特大地震影響演闭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颓帝,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一米碰、第九天 我趴在偏房一處隱蔽的房頂上張望窝革。 院中可真熱鬧,春花似錦吕座、人聲如沸虐译。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漆诽。三九已至,卻和暖如春锣枝,著一層夾襖步出監(jiān)牢的瞬間厢拭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工撇叁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留供鸠,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓陨闹,卻偏偏與公主長得像楞捂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子趋厉,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

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

  • Array簡介 創(chuàng)建Array的方式 使用構造器創(chuàng)建var colors = new Array();var co...
    程序員大狗閱讀 224評論 0 0
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,238評論 0 4
  • Chapter 5 引用類型 Object類型 創(chuàng)建Object實例new Object()var person ...
    云之外閱讀 391評論 0 0
  • 第一章: JS簡介 從當初簡單的語言寨闹,變成了現(xiàn)在能夠處理復雜計算和交互,擁有閉包君账、匿名函數(shù)鼻忠, 甚至元編程等...
    LaBaby_閱讀 1,678評論 0 6
  • 有部老電影叫心慌方《Cube》(特指第一部),講了一個神奇的項目——不斷變化的模仿陷阱監(jiān)獄杈绸。而這個沒有幕后黑手的項...
    alucardzhou閱讀 127評論 0 2