摘要:如果傳遞給方法的是一或多個(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] |
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
摘要:如果網(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)典問題...
摘要:說明此摘要筆記系列是我最近看高級(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),是按照我看...
摘要:用于把對(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ǔ)...
摘要:數(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ì)象, 以此類...
摘要:為了每個(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)來...
摘要:上一篇你不知道的筆記寫在前面這是年第一篇博客,回顧去年年初列的學(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)定、...
閱讀 3912·2021-11-17 09:33
閱讀 1213·2021-10-09 09:44
閱讀 412·2019-08-30 13:59
閱讀 3487·2019-08-30 11:26
閱讀 2190·2019-08-29 16:56
閱讀 2862·2019-08-29 14:22
閱讀 3157·2019-08-29 12:11
閱讀 1283·2019-08-29 10:58