JavaScript學(xué)習(xí)總結(jié)(一)--JavaScript數(shù)組

數(shù)組

  • 創(chuàng)建數(shù)組的兩種基本方式

    • 1使用構(gòu)造函數(shù)

    • 2.數(shù)組字面量


    var colors = new Array();

    var colors = [];

    //檢測(cè)數(shù)組 instanceof

    // 1. if(value instanceof Array) {}

    // 2. Array.isArray()

    if(Array.isArray(value)) {



    }

數(shù)組轉(zhuǎn)換方法

  • toString() 返回有數(shù)組中的每個(gè)值得字符串形式拼接而成的一個(gè)以逗號(hào)分隔的字符串

  • valueOf() 返回的還是數(shù)組


  var colors = ['red', 'blue', 'green'];

  // console.log(colors.toString()); //red,blue,green

  // console.log(colors.valueOf()); // ["red", "blue", "green"]

  console.log(colors.join(",")); //red,blue,green

  console.log(colors.join()) //red,blue,green

  console.log(colors.join("||")) //red||blue||green

數(shù)組方法 棧方法和隊(duì)列方法

  • 棧方法 棧是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)

  • 隊(duì)列數(shù)據(jù)結(jié)構(gòu)是先進(jìn)先出

push() pop()


  // 棧方法 棧是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)

    // push() pop()

    // push() 添加到數(shù)組末尾

    // pop()從數(shù)組末尾移除最后一項(xiàng)

    var colors = new Array();

    var count = colors.push("red", "green");

    count = colors.push('black');

    console.log(count) //3

    console.log(colors) //["red", "green", "black"]

    var item = colors.pop();

    console.log(colors) // ["red", "green"]

shift() unshift()


    // 隊(duì)列方法

    // 隊(duì)列數(shù)據(jù)結(jié)構(gòu)是先進(jìn)先出

    // shift() unshift()

    // shift() 移除數(shù)組中的第一個(gè)項(xiàng)并返回該項(xiàng)

    // unshift() 向數(shù)組前端添加任意項(xiàng)并返回新數(shù)組的長(zhǎng)度

    var colors = new Array();

    var count = colors.push("red", "green");

    console.log(colors);

    count = colors.push('black');

    var item = colors.shift();

    console.log(item)// red

    console.log(colors)// ["green", "black"]

    var colors = new Array();

    var count = colors.unshift("red", "green");

    console.log(count)//2

    count = colors.unshift("black");

    console.log(colors)// ["black", "red", "green"]

    var item = colors.pop();

    console.log(item) // green

    console.log(colors) // ["black", "red"]

重排序方法

reverse() sort()


  // reverse() sort()

  // reverse()數(shù)組翻轉(zhuǎn)

  // sort()  方法按升序排列數(shù)組項(xiàng)

  // sort()方法本質(zhì)上實(shí)現(xiàn)是調(diào)用每個(gè)數(shù)組項(xiàng)的toString()轉(zhuǎn)型方法响禽,然后比較得到的字符串皮获,來(lái)確定排序。即使數(shù)組的每項(xiàng)都是數(shù)組酵幕,sort()方法比較的也是字符串

  var value = [1,2,3,4,5];

  value.reverse();

  console.log(value) //[5, 4, 3, 2, 1]

  var values = [0,1,5, 10, 15];

  values.sort()

  console.log(values) //[0, 1, 10, 15, 5]

操作方法

concat() slice() splice()


    // 操作方法

    // concat() 法基于當(dāng)前數(shù)組中的所有項(xiàng)創(chuàng)建一個(gè)新數(shù)組洽故。也就是將新的添加到數(shù)組的末尾血当,最后構(gòu)成新的數(shù)組硅急。也可以傳遞多個(gè)數(shù)組迂曲。

    var colors = ["red", "green", "blue"];

    var colors2 = colors.concat("yellow", ["blcak", "brown"]);

    console.log(colors); //["red", "green", "blue"]

    console.log(colors2); // ["red", "green", "blue", "yellow", "blcak", "brown"]

    // slice()

    // 截取

    // slice() 接收一個(gè)或兩個(gè)參數(shù)靶橱。 既要返回項(xiàng)的起始和結(jié)束位置。方法不會(huì)影響原來(lái)的數(shù)組路捧。

    var colors = ["red", "green", "blue", "yellow", "purple"];

    var colors2 = colors.slice(1);

    var colors3 = colors.slice(1, 4);

    console.log(colors2); //["green", "blue", "yellow", "purple"]

    console.log(colors3); //["green", "blue", "yellow"]

    // splice() 主要是向數(shù)組中部插入項(xiàng)

    // 刪除 插入 替換

    var colors = ["red", "green", "blue"];

    var removed = colors.splice(0, 1);

    console.log(colors); // ["green", "blue"]

    removed = colors.splice(1, 0,"yellow", "orange");

    console.log(colors); // ["green", "yellow", "orange", "blue"]

    removed = colors.splice(1, 1, "red", "pruple");

    console.log(removed);// ["yellow"]

位置方法

indexOf() lastIndexOf()


  // indexOf() lastIndexOf()

  // 沒(méi)有找到的情況返回-1

  var numbers = [1,2,3,4,5];

  console.log(numbers.indexOf(4)) //3



迭代方法

  1. every() 對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù)关霸,如果該函數(shù)對(duì)每一項(xiàng)返回true 著返回true

  2. filter() 對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù), 如果該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組

  3. forEach() 這個(gè)方法沒(méi)有返回值

  4. map() 返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組

  5. some() 如果該函數(shù)對(duì)每一項(xiàng)返回true杰扫,著返回true

這些方法都不會(huì)修改數(shù)組的值


    var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];

    var everyResult = numbers.every(function (item, index, array) {

      return (item > 2)

    })

    console.log(everyResult) // false

    var someResult = numbers.some(function (item, index, array) {

      return (item > 2)

    })

    console.log(someResult) // true

    var filterResult = numbers.filter(function (item, index, array) {

      return (item > 2)

    })

    console.log(filterResult) // [3, 4, 5, 4, 3]

    var mapResult = numbers.map(function (item, index, array) {

      return item * 2

    })

    console.log(mapResult) // [2, 4, 6, 8, 10, 8, 6, 4, 2]

  // forEach()方法 只是對(duì)數(shù)組中的每一項(xiàng)運(yùn)行傳入的函數(shù)队寇,這個(gè)方法沒(méi)有返回值。

  // 本質(zhì)上與使用for循環(huán)迭代數(shù)組一樣

  var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];

  numbers.forEach(function(item, indx, array) {

    // 執(zhí)行操作

  })

歸并方法

reduce() reduceRight()

  • es5新增兩個(gè)歸并數(shù)組的方法章姓。這兩個(gè)方法都會(huì)迭代數(shù)組的所有項(xiàng)佳遣,然后構(gòu)建一個(gè)最終返回的值。

  • reduce()方法從數(shù)組的第一項(xiàng)開(kāi)始凡伊,逐個(gè)遍歷到最后零渐。

  • 而reduceRight()則從數(shù)組的最后一項(xiàng)開(kāi)始,向前遍歷到第一項(xiàng)系忙。

  • 這兩個(gè)方法都接收兩個(gè)參數(shù)诵盼,一個(gè)在每一項(xiàng)上調(diào)用的函數(shù)和(可選的)作為歸并基礎(chǔ)的初始值。

  • 傳個(gè)reduce()和reduceRight()的函數(shù)接收4個(gè)參數(shù)

  • 前一個(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)杀糯,第二個(gè)參數(shù)就是數(shù)組的第二項(xiàng)


  // reduce() reduceRight()

    // 使用reduce() 方法可以執(zhí)行求數(shù)組中所有值之和的操作

    var values = [1, 2, 3, 4, 5];

    var sum = values.reduce(function (prev, cur, index, array) {

      return prev + cur;

    })

    console.log(sum) // 15

    var values = [1, 2, 3, 4, 5];

    var sum = values.reduceRight(function (prev, cur, index, array) {

      return prev + cur;

    })

    console.log(sum) // 15

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市苍苞,隨后出現(xiàn)的幾起案子固翰,更是在濱河造成了極大的恐慌,老刑警劉巖羹呵,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骂际,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡冈欢,警方通過(guò)查閱死者的電腦和手機(jī)歉铝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)凑耻,“玉大人太示,你說(shuō)我怎么就攤上這事柠贤。” “怎么了类缤?”我有些...
    開(kāi)封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵臼勉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我餐弱,道長(zhǎng)宴霸,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任膏蚓,我火速辦了婚禮瓢谢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘降允。我一直安慰自己恩闻,他們只是感情好艺糜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布剧董。 她就那樣靜靜地躺著,像睡著了一般破停。 火紅的嫁衣襯著肌膚如雪翅楼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天真慢,我揣著相機(jī)與錄音毅臊,去河邊找鬼。 笑死黑界,一個(gè)胖子當(dāng)著我的面吹牛管嬉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播朗鸠,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蚯撩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了烛占?” 一聲冷哼從身側(cè)響起胎挎,我...
    開(kāi)封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忆家,沒(méi)想到半個(gè)月后犹菇,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芽卿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年揭芍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卸例。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡称杨,死狀恐怖流酬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情列另,我是刑警寧澤芽腾,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站页衙,受9級(jí)特大地震影響摊滔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜店乐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一艰躺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧眨八,春花似錦腺兴、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至段誊,卻和暖如春闰蚕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背连舍。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工没陡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人索赏。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓盼玄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親潜腻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子埃儿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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

  • ??引用類型的值(對(duì)象)是引用類型的一個(gè)實(shí)例蝌箍。 ??在 ECMAscript 中,引用類型是一種數(shù)據(jù)結(jié)構(gòu)暴心,用于將數(shù)...
    霜天曉閱讀 1,056評(píng)論 0 1
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,234評(píng)論 0 4
  • 數(shù)組總共有22種方法妓盲,本文將其分為對(duì)象繼承方法、數(shù)組轉(zhuǎn)換方法专普、棧和隊(duì)列方法悯衬、數(shù)組排序方法、數(shù)組拼接方法、創(chuàng)建子數(shù)組...
    Sachie閱讀 899評(píng)論 0 7
  • 由于最近都在freecodecamp上刷代碼筋粗,運(yùn)用了很多JavaScript數(shù)組的方法策橘,因此做了一份關(guān)于JavaS...
    2bc5f46e925b閱讀 1,976評(píng)論 0 16
  • 插入鏈接: 輸入你要顯示的文字 加粗: 輸入你要加粗的文字 引用: 輸入你要引用的文字段落 下劃線: 輸入你要打下...
    別關(guān)注我oh閱讀 2,769評(píng)論 0 0