成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

《javascript高級(jí)程序設(shè)計(jì)》筆記:數(shù)組方法

Aomine / 399人閱讀

摘要:如果傳遞給方法的是一或多個(gè)數(shù)組,則該方法會(huì)將這些數(shù)組中的每一項(xiàng)都添加到結(jié)果數(shù)組中。如果有兩個(gè)參數(shù),該方法返回起始和結(jié)束位置之間的項(xiàng),但不包括結(jié)束位置的項(xiàng)。為了實(shí)現(xiàn)排序,方法會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的轉(zhuǎn)型方法,然后比較得到的字符串,以確定如何排序。

將數(shù)組轉(zhuǎn)換成字符串

join()能夠?qū)?shù)組用指定的字符分割成字符串

方法 用法 變量的值 表達(dá)式的值
假設(shè) arr = [1,2,3]
join arr.join() [1,2,3] "1,2,3"
- arr.join(undefined) [1,2,3] "1,2,3"
- arr.join("-") [1,2,3] "1-2-3"
- arr.join(null) [1,2,3] "1null2null3"
- arr.join({}) [1,2,3] "1[object Object]2[object Object]3"

結(jié)論:
1.不給 join()方法傳入任何值,或者給它傳入 undefined,則使用逗號(hào)作為分隔符;
2.join()會(huì)將傳入的參數(shù)隱式轉(zhuǎn)換成字符串形式
3.如果數(shù)組中的某一項(xiàng)的值是 null 或者 undefined,那么返回的結(jié)果中以空字符串表示,toString()也遵循該準(zhǔn)則 [1,2,undefined,3].join() ==> "1,2,,3"

toString() / toLocaleString() 也能夠?qū)?shù)組轉(zhuǎn)換成字符串;
alert() 方法會(huì)隱式調(diào)用toString()方法

調(diào)用數(shù)組的 toString() 方法會(huì)返回由數(shù)組中每個(gè)值的字符串形式拼接而成的一個(gè)以逗號(hào)分隔的字符串;

當(dāng)調(diào)用數(shù)組的 toLocaleString() 方法時(shí),它也會(huì)創(chuàng)建一個(gè)數(shù)組值的以逗號(hào)分隔的字符串。而與之前方法唯一的不同之處在于,這一次為了取得每一項(xiàng)的值,調(diào)用的是每一項(xiàng)的 toLocaleString() 方法,而不是 toString() 方法,下面的例子可以解釋這一現(xiàn)象:

var person1 = {
    toLocaleString : function () {
        return "Nikolaos";
    },
    toString : function() {
        return "Nicholas";
} };
var person2 = {
    toLocaleString : function () {
        return "Grigorios";
    },
    toString : function() {
        return "Greg";
} };
var people = [person1, person2];
alert(people);
alert(people.toString());
alert(people.toLocaleString());
//Nicholas,Greg
//Nicholas,Greg
//Nikolaos,Grigorios
數(shù)組的增刪操作

1.堆棧方法

方法 用法 變量的值 表達(dá)式的值
假設(shè) arr = [1,2,3]
push arr.push(4,5) [1,2,3,5] 4
- 接收任意數(shù)量的參數(shù),把它們逐個(gè)添加到數(shù)組末尾,并返回修改后數(shù)組的長(zhǎng)度
pop arr.pop() [1,2] 3
- arr.pop(123) [1,2] 3
- 從數(shù)組末尾移除最后一項(xiàng),減少數(shù)組的 length 值,然后返回移除的項(xiàng)(有參忽略)
unshift arr.unshift(4,5) [4,5,1,2,3] 5
- 接收任意數(shù)量的參數(shù),把它們逐個(gè)添加到數(shù)組首端,并返回修改后數(shù)組的長(zhǎng)度
shift arr.shift() [2,3] 1
- 從數(shù)組首端移除第一項(xiàng),減少數(shù)組的 length 值,然后返回移除的項(xiàng)(有參忽略)

2.concat方法

concat()方法可以基于當(dāng)前數(shù)組中的所有項(xiàng)創(chuàng)建一個(gè)新數(shù)組。具體來說,這個(gè)方法會(huì)先創(chuàng)建當(dāng)前數(shù)組一個(gè)副本,然后將接收到的參數(shù)添加到這個(gè)副本的末尾,最后返回新構(gòu)建的數(shù)組。

1.在沒有給 concat()方法傳遞參數(shù)的情況下,它只是復(fù)制當(dāng)前數(shù)組并返回副本。
2.如果傳遞給 concat()方法的是一或多個(gè)數(shù)組,則該方法會(huì)將這些數(shù)組中的每一項(xiàng)都添加到結(jié)果數(shù)組中。
3.如果傳遞的值不是數(shù)組,這些值就會(huì)被簡(jiǎn)單地添加到結(jié)果數(shù)組的末尾
4.arr === arr.concat() 為false

方法 用法 變量的值 表達(dá)式的值
假設(shè) arr = [1,2,3]
concat arr.concat() [1,2,3] [1,2,3]
- arr.concat(4,5) [1,2,3] [1,2,3,4,5]
- arr.concat(4,5,[6,7]) [1,2,3] [1,2,3,4,5,6,7]

3.slice方法

slice()方法用于數(shù)組的截取,可以接受一或兩個(gè)參數(shù),即要返回項(xiàng)的起始和結(jié)束位置;

1.沒有參數(shù)時(shí),會(huì)創(chuàng)建一個(gè)副本,但arr !== arr.slice()
1.在只有一個(gè)參數(shù)的情況下,slice()方法返回從該參數(shù)指定位置開始到當(dāng)前數(shù)組末尾的所有項(xiàng)。
2.如果有兩個(gè)參數(shù),該方法返回起始和結(jié)束位置之間的項(xiàng),但不包括結(jié)束位置的項(xiàng)。
3.如果 slice()方法的參數(shù)中有一個(gè)負(fù)數(shù),則用數(shù)組長(zhǎng)度加上該數(shù)來確定相應(yīng)的位置。
4.如果結(jié)束位置小于起始位置,則返回空數(shù)組。

方法 用法 變量的值 表達(dá)式的值
假設(shè) arr = [1,2,3,4,5]
slice arr.slice() [1,2,3,4,5] [1,2,3,4,5]
- arr.slice(1) [1,2,3,4,5] [2,3,4,5]
- arr.slice(1,4) [1,2,3,4,5] [2,3,4]
- arr.slice(-2,-1) [1,2,3,4,5] [4]
- arr.slice(4,3) [1,2,3,4,5] []

4.splice方法

splice(刪除的第一項(xiàng)索引,刪除元素個(gè)數(shù),插入的內(nèi)容...)
splice()的主要用途是向數(shù)組的中部插入項(xiàng),但使用這種方法的方式則有如下 3 種:

1.刪除:可以刪除任意數(shù)量的項(xiàng),只需指定 2 個(gè)參數(shù):要?jiǎng)h除的第一項(xiàng)的位置和要?jiǎng)h除的項(xiàng)數(shù)
2.插入:可以向指定位置插入任意數(shù)量的項(xiàng),只需提供 3 個(gè)參數(shù):起始位置、0(要?jiǎng)h除的項(xiàng)數(shù))和要插入的項(xiàng)。如果要插入多個(gè)項(xiàng),可以再傳入第四、第五,以至任意多個(gè)項(xiàng)
3.替換:可以向指定位置插入任意數(shù)量的項(xiàng),且同時(shí)刪除任意數(shù)量的項(xiàng),只需指定 3 個(gè)參數(shù):起始位置、要?jiǎng)h除的項(xiàng)數(shù)和要插入的任意數(shù)量的項(xiàng)。插入的項(xiàng)數(shù)不必與刪除的項(xiàng)數(shù)相等

splice()方法始終都會(huì)返回一個(gè)數(shù)組,該數(shù)組中包含從原始數(shù)組中刪除的項(xiàng)(如果沒有刪除任何 項(xiàng),則返回一個(gè)空數(shù)組)

方法 用法 變量的值 表達(dá)式的值
假設(shè) arr = [1,2,3,4,5]
splice arr.splice() [1,2,3,4,5] []
- arr.splice(1) [2,3,4,5] [1]
- arr.splice(1,2) [1,4,5] [2,3]
- arr.splice(-2,2) [1,2,3] [4,5]
- arr.splice(1,2,"a","b","c","插入") [1,"a","b","c","插入",4,5] [2,3]
- arr.splice(1,1,"替代") [1,"替代",3,4,5] [2]
數(shù)組排序

1.reverse()方法

數(shù)組反轉(zhuǎn),數(shù)組自身改變,并返回反轉(zhuǎn)后的值

方法 用法 變量的值 表達(dá)式的值
假設(shè) arr = [1,2,3,4,5]
reverse arr.reverse() [5,4,3,2,1] [5,4,3,2,1]

2.sort()方法
參考:js中sort()方法的用法,參數(shù)以及排序原理

在默認(rèn)情況下(沒有參數(shù)),sort()方法按升序排列數(shù)組項(xiàng)——即最小的值位于最前面,最大的值排在最后面。 為了實(shí)現(xiàn)排序,sort()方法會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的 toString()轉(zhuǎn)型方法,然后比較得到的字符串,以確定如何排序。即使數(shù)組中的每一項(xiàng)都是數(shù)值,sort()方法比較的也是字符串

因此,會(huì)出現(xiàn)下面這種情況:

var arr1 = ["George", "John", "Thomas", "James", "Adrew", "Martin"];
arr.sort(); // ["Adrew", "George", "James", "John", "Martin", "Thomas"]

var arr2 = ["10", "5", "40", "25", "1000", "1"];
arr.sort(); // ["1", "10", "1000", "25", "40", "5"] 

如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序,就需要提供比較函數(shù),該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說明這兩個(gè)值的相對(duì)順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b,其返回值如下:
若 a 小于 b,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,則返回一個(gè)小于 0 的值。
若 a 等于 b,則返回 0。
若 a 大于 b,則返回一個(gè)大于 0 的值。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91403.html

相關(guān)文章

  • javascript高級(jí)程序設(shè)計(jì)筆記:檢測(cè)數(shù)組方法

    摘要:如果網(wǎng)頁(yè)中包含多個(gè)框架,那實(shí)際上就存在兩個(gè)以上不同的全局執(zhí)行環(huán)境,從而存在兩個(gè)以上不同版本的構(gòu)造函數(shù)。如果你從一個(gè)框架向另一個(gè)框架傳入一個(gè)數(shù)組,那么傳入的數(shù)組與在第二個(gè)框架中原生創(chuàng)建的數(shù)組分別具有各自不同的構(gòu)造函數(shù)。 如何檢測(cè)某個(gè)變量是否為數(shù)組? 《javascript 高級(jí)程序設(shè)計(jì)》原文摘錄: 自從 ECMAScript 3 做出規(guī)定以后,就出現(xiàn)了確定某個(gè)對(duì)象是不是數(shù)組的經(jīng)典問題...

    wums 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)-摘要筆記-1

    摘要:說明此摘要筆記系列是我最近看高級(jí)程序設(shè)計(jì)第版隨手所記。摘要筆記本身沒有系統(tǒng)性,沒有全面性可言,寫在這里供有一定基礎(chǔ)的前端開發(fā)者參考交流。對(duì)每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回的項(xiàng)組成的數(shù)組。是的反操作是的反操作第一部分結(jié)束。 說明: 此摘要筆記系列是我最近看《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》隨手所記。 里面分條列舉了一些我認(rèn)為重要的、需要記下的、對(duì)我有幫助的點(diǎn),是按照我看...

    chavesgu 評(píng)論0 收藏0
  • 讀書筆記(01) - JSON - JavaScript高級(jí)程序設(shè)計(jì)

    摘要:用于把對(duì)象序列化字符串,在序列化對(duì)象時(shí),所有函數(shù)及原型成員都會(huì)被有意忽略,不體現(xiàn)在結(jié)果中。對(duì)第步返回的每個(gè)值進(jìn)行相應(yīng)的序列化。參考文檔高級(jí)程序設(shè)計(jì)作者以樂之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVburW1?w=658&h=494); JSON與JavaScript對(duì)象 JSON是一種表示結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)格式,語(yǔ)...

    mengbo 評(píng)論0 收藏0
  • javascript高級(jí)程序設(shè)計(jì)筆記_數(shù)組 稀疏數(shù)組數(shù)組

    摘要:數(shù)組是數(shù)據(jù)的有序列表,與其他語(yǔ)言不同的是,數(shù)組的每一項(xiàng)可以保存任何類型的數(shù)據(jù)。如下的代碼創(chuàng)建的就是一個(gè)密集數(shù)組稀疏數(shù)組與密集數(shù)組相反,并不強(qiáng)制要求數(shù)組元素是緊密相連的,即允許間隙的存在。 數(shù)組是數(shù)據(jù)的有序列表,與其他語(yǔ)言不同的是,ECMAScript 數(shù)組的每一項(xiàng)可以保存任何類型的數(shù)據(jù)。也就是說,可以用數(shù)組的第一個(gè)位置來保存字符串,用第二位置來保存數(shù)值,用第三個(gè)位置來保存對(duì)象, 以此類...

    pepperwang 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)》讀書筆記

    摘要:為了每個(gè)對(duì)象都能通過來檢測(cè),需要以或者的形式來調(diào)用,傳遞要檢查的對(duì)象作為第一個(gè)參數(shù),稱為。對(duì)象都是動(dòng)態(tài)的,這就意味著每次訪問對(duì)象,都會(huì)運(yùn)行一次查詢。是語(yǔ)言中立的用于訪問和操作和文檔。 一、第三章 基本概念: 1.理解參數(shù) 1.1 可以向函數(shù)中傳遞任意數(shù)量的參數(shù),并且可以通過arguments對(duì)象來訪問這些參數(shù)。 1.2 arguments對(duì)象只是類似數(shù)組,它通過length來確定傳進(jìn)來...

    dayday_up 評(píng)論0 收藏0
  • 《你不知道的javascript筆記_對(duì)象&原型

    摘要:上一篇你不知道的筆記寫在前面這是年第一篇博客,回顧去年年初列的學(xué)習(xí)清單,發(fā)現(xiàn)僅有部分完成了。當(dāng)然,這并不影響年是向上的一年在新的城市穩(wěn)定連續(xù)堅(jiān)持健身三個(gè)月早睡早起游戲時(shí)間大大縮減,學(xué)會(huì)生活。 上一篇:《你不知道的javascript》筆記_this 寫在前面 這是2019年第一篇博客,回顧去年年初列的學(xué)習(xí)清單,發(fā)現(xiàn)僅有部分完成了。當(dāng)然,這并不影響2018年是向上的一年:在新的城市穩(wěn)定、...

    seasonley 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<