05-JavaScript數(shù)組

JavaScript數(shù)組

  • 專門用于存儲一組數(shù)據(jù)的,不是基本數(shù)據(jù)類型,是引用數(shù)據(jù)類型(對象類型)

  • 創(chuàng)建數(shù)組

    let 變量名稱 = new Array(size);
    
  • 操作數(shù)據(jù)

    往數(shù)組中存儲數(shù)據(jù):
    變量名稱[索引號] = 需要存儲的數(shù)據(jù);
    從數(shù)組中獲取存儲的數(shù)據(jù):
    變量名稱[索引號];
    
  • 數(shù)組注意點

    • 和其它編程語言不同,如果數(shù)組對應(yīng)的索引沒有存儲數(shù)據(jù),默認(rèn)存儲的就是undefined,其他編程語言中默認(rèn)保存的是垃圾數(shù)據(jù)或者0
    • 和其它編程語言不同,JavaScript中訪問了數(shù)組中不存在的索引不會報錯,會返回undefined,其他編程語言一旦超出范圍就會報錯或者返回臟數(shù)據(jù)
    • 和其他編程語言不同,當(dāng)JavaScript中數(shù)組的存儲空間不夠時數(shù)組會自動擴(kuò)容,其他編程語言中數(shù)組的大小是固定的
    • 和其它編程語言不同,JavaScript的數(shù)組可以存儲不同類型數(shù)據(jù),其他編程語言中數(shù)組只能存儲相同類型數(shù)據(jù)
    • 和其它編程語言不同,JavaScript中數(shù)組分配的存儲空間不一定是連續(xù)的,其他編程語言數(shù)組分配的存儲空間都是連續(xù),JavaScript數(shù)組采用"哈希映射"方式分配存儲空間(好比字典可以通過偏旁部首找到對應(yīng)漢字,我們可以通過索引找到對應(yīng)空間)
      • 在瀏覽器中各大瀏覽器也對數(shù)組分配存儲空間進(jìn)行了優(yōu)化
      • 如果存儲的都是相同類型的數(shù)據(jù),那么會盡量分配連續(xù)的存儲空間
  • 創(chuàng)建數(shù)組的其他方式

    通過構(gòu)造函數(shù)創(chuàng)建數(shù)組
    let 變量名稱 = new Array(size);創(chuàng)建一個指定大小數(shù)組
    let 變量名稱 = new Array();創(chuàng)建一個空數(shù)組
    let 變量名稱 = new Array(data1,data2,...);創(chuàng)建一個帶數(shù)據(jù)的數(shù)組
    通過字面量創(chuàng)建數(shù)組
    let 變量名稱 = [];創(chuàng)建一個空數(shù)組
    let 變量名稱 = [data1,data2,...];創(chuàng)建一個帶數(shù)據(jù)的數(shù)組
    
    
數(shù)組遍歷
  • 數(shù)組的遍歷就是依次取出數(shù)組中存儲的所有數(shù)據(jù),我們就稱之為數(shù)組的遍歷

    for(let i = 0;i < arr.length;i++){
        console.log(arr[i]);
    }
    
數(shù)組解構(gòu)賦值
  • 數(shù)組解構(gòu)賦值是ES6新增的賦值方式
  • 數(shù)組解構(gòu)賦值注意點
    • 在數(shù)組的解構(gòu)賦值中,等號左邊的格式必須和等號右邊的格式一模一樣,才能完全結(jié)構(gòu)
    • 在數(shù)組的解構(gòu)賦值中,左邊的個數(shù)可以和右邊的個數(shù)不一樣
    • 在數(shù)組的解構(gòu)賦值中,右邊的個數(shù)可以和左邊的個數(shù)不一樣
    • 在數(shù)組的解構(gòu)賦值中,如果右邊的個數(shù)和左邊的個數(shù)不一樣,那么我們可以給左邊指定默認(rèn)值
    • 在數(shù)組的解構(gòu)賦值中,如果左邊的個數(shù)和右邊的個數(shù)一樣,那么設(shè)置默認(rèn)值會被覆蓋
    • 在數(shù)組的解構(gòu)賦值中,還可以使用ES6中新增的擴(kuò)展運(yùn)算符...來打包剩余的數(shù)據(jù),如果使用了擴(kuò)展運(yùn)算符,那么擴(kuò)展運(yùn)算符只能寫在最后
數(shù)組增刪改查

let arr = ["a", "b", "c"];

需求: 獲取數(shù)組中索引為1的那個數(shù)據(jù) (查)

console.log(arr[1]);

需求: 將索引為1的數(shù)據(jù)修改為m (改)

arr[1] = "m";

需求: 將索引為1的數(shù)據(jù)修改為d, 索引為2的修改為e (改)

arr.splice(1, 2, "d", "e");
參數(shù)1: 從什么位置開始
參數(shù)2: 需要替換多少個元素
參數(shù)3開始: 新的內(nèi)容

需求: 要求在數(shù)組最后添加一條數(shù)據(jù) (增)

arr.push("d");
push方法可以在數(shù)組的最后新增一條數(shù)據(jù), 并且會將新增內(nèi)容之后數(shù)組當(dāng)前的長度返回給我們

需求: 要求在數(shù)組最后添加兩條數(shù)據(jù) (增)

arr.push("d", "e");
數(shù)組的push方法可以接收1個或多個參數(shù)

需求: 要求在數(shù)組最前面添加一條數(shù)據(jù) (增)

arr.unshift("m");
unshift方法和push方法一樣, 會將新增內(nèi)容之后當(dāng)前數(shù)組的長度返回給我們

需求: 要求在數(shù)組最前面添加兩條數(shù)據(jù) (增)

unshift方法和push方法一樣, 可以接收1個或多個參數(shù)

需求: 要求刪除數(shù)組最后一條數(shù)據(jù) (刪)

arr.pop();
數(shù)組的pop方法可以刪除數(shù)組中的最后一條數(shù)據(jù),  并且將刪除的數(shù)據(jù)返回給我們

需求: 要求刪除數(shù)組最前面一條數(shù)據(jù) (刪)

arr.shift();
數(shù)組的shift方法可以刪除數(shù)組中的最前面一條數(shù)據(jù),  并且將刪除的數(shù)據(jù)返回給我們

需求: 要求刪除數(shù)組中索引為1的數(shù)據(jù) (刪)

arr.splice(1, 1);
參數(shù)1: 從什么位置開始
參數(shù)2: 需要刪除多少個元素
數(shù)組的常用方法
  • 清空數(shù)組

    arr = [];
    arr.length = 0;
    arr.splice(0, arr.length);
    
    
  • 將數(shù)組轉(zhuǎn)換為字符串

    arr.toString();
    
  • 將數(shù)組轉(zhuǎn)換成指定格式字符串

    arr.join();
    數(shù)組不能夠使用加號進(jìn)行拼接, 如果使用加號進(jìn)行拼接會先轉(zhuǎn)換成字符串再拼接
    join方法默認(rèn)情況下如果沒有傳遞參數(shù),就是調(diào)用toString
    join方法如果傳遞了參數(shù),就會將傳遞的參數(shù)作為元素和元素的連接符號
    
  • 將兩個數(shù)組拼接為一個數(shù)組

    arr1.concat(arr2);
    let res = [...arr1,...arr2];
    擴(kuò)展運(yùn)算符在解構(gòu)賦值中(等號的左邊)表示將剩余的數(shù)據(jù)打包成一個新的數(shù)組
    擴(kuò)展運(yùn)算符在等號右邊, 那么表示將數(shù)組中所有的數(shù)據(jù)解開, 放到所在的位置
    
  • 對數(shù)組中的內(nèi)容進(jìn)行反轉(zhuǎn)

    arr.reverse();
    會修改原有數(shù)組
    
  • 截取數(shù)組中指定范圍內(nèi)容

    arr.slice();
    slice方法是包頭不包尾(包含起始位置,不包含結(jié)束位置)
    
  • 查找元素在數(shù)組中的位置

    arr.indexOf(參數(shù)1,參數(shù)2);
    arr.lastindexOf(參數(shù)1,參數(shù)2);
    參數(shù)1: 需要查找的元素
    參數(shù)2: 從什么位置開始查找
    indexOf方法默認(rèn)是從左至右的查找, 一旦找到就會立即停止查找
    lastIndexOf方法默認(rèn)是從右至左的查找, 一旦找到就會立即停止查找
    
  • 判斷數(shù)組中是否包含某個元素

    arr.includes();根據(jù)返回true或者false來判斷
    還可以通過indexOf和lastIndexOf的結(jié)果, 判斷是否是-1即可
    

二維數(shù)組

  • 二維數(shù)組就是數(shù)組的每一個元素又是一個數(shù)組,稱之為二維數(shù)組

  • 操作二維數(shù)組

    • 從二維數(shù)組中獲取數(shù)據(jù)

      • 數(shù)組名稱[二維數(shù)組索引];得到一個一維數(shù)組
      • 數(shù)組名稱[二維數(shù)組索引][一維數(shù)組索引];得到一維數(shù)組中的元素
    • 往二維數(shù)組中存儲數(shù)據(jù)

      • 數(shù)組名稱[二維數(shù)組索引] = 一維數(shù)組;
      • 數(shù)組名稱[二維數(shù)組索引][一維數(shù)組索引] = 值;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子约郁,更是在濱河造成了極大的恐慌涯贞,老刑警劉巖热监,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件展姐,死亡現(xiàn)場離奇詭異沐绒,居然都是意外死亡蔗彤,警方通過查閱死者的電腦和手機(jī)川梅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來然遏,“玉大人贫途,你說我怎么就攤上這事±裁” “怎么了潮饱?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長诫给。 經(jīng)常有香客問我香拉,道長,這世上最難降的妖魔是什么中狂? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任凫碌,我火速辦了婚禮,結(jié)果婚禮上胃榕,老公的妹妹穿的比我還像新娘盛险。我一直安慰自己瞄摊,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布苦掘。 她就那樣靜靜地躺著换帜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹤啡。 梳的紋絲不亂的頭發(fā)上惯驼,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機(jī)與錄音递瑰,去河邊找鬼祟牲。 笑死,一個胖子當(dāng)著我的面吹牛抖部,可吹牛的內(nèi)容都是我干的说贝。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼慎颗,長吁一口氣:“原來是場噩夢啊……” “哼乡恕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起俯萎,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤几颜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后讯屈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛋哭,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年涮母,在試婚紗的時候發(fā)現(xiàn)自己被綠了谆趾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡叛本,死狀恐怖沪蓬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情来候,我是刑警寧澤跷叉,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站营搅,受9級特大地震影響云挟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜转质,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一园欣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧休蟹,春花似錦沸枯、人聲如沸日矫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哪轿。三九已至,卻和暖如春翔怎,著一層夾襖步出監(jiān)牢的瞬間缔逛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工姓惑, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人按脚。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓于毙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辅搬。 傳聞我的和親對象是個殘疾皇子唯沮,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

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