JavaScript面試考點(diǎn)之?dāng)?shù)組、字符串和Object的常用方法

1、JavaScript數(shù)組的常用方法

我們可以把數(shù)組的基本操作方法歸納為增、刪、改、查。

1)增:push ()、unshift ()、slice ()、splice ()、contact ()

push () 方法是接收任意數(shù)量的參數(shù),并將其添加到數(shù)組的末尾,返回值為該數(shù)組的最新長(zhǎng)度。會(huì)影響原始數(shù)組。

unshift () 方法是接收任意數(shù)量的參數(shù),并將其添加到數(shù)組的開(kāi)頭,返回值為該數(shù)組的最新長(zhǎng)度。會(huì)影響原始數(shù)組。

slice (start,end) 方法可從已有的數(shù)組中返回選定的元素。將所有從索引 start 到 end(不包括 end)的數(shù)組項(xiàng)復(fù)制到一個(gè)新的數(shù)組,所以不會(huì)影響原始數(shù)組。可傳入可選參數(shù)起始位置start(數(shù)組片斷開(kāi)始處的數(shù)組下標(biāo),包含開(kāi)始索引。如果該參數(shù)為負(fù)數(shù),則表示從原數(shù)組中的倒數(shù)第幾個(gè)元素開(kāi)始提取,slice(-2) 表示提取原數(shù)組中的倒數(shù)第二個(gè)元素到最后一個(gè)元素(包含最后一個(gè)元素))、結(jié)束位置end(數(shù)組片斷結(jié)束處的數(shù)組下標(biāo),不包含結(jié)束索引。如果沒(méi)有指定該參數(shù),那么切分的數(shù)組包含從 start 到數(shù)組結(jié)束的所有元素。如果該參數(shù)為負(fù)數(shù), 則它表示在原數(shù)組中的倒數(shù)第幾個(gè)元素結(jié)束抽取)。

splice(start,刪除元素個(gè)數(shù),添加元素1,元素2) 方法可以用于刪除數(shù)組中的指定元素。使用splice()會(huì)影響到原數(shù)組,會(huì)將指定元素從原數(shù)組中刪除,并將被刪除的元素作為返回值返回。傳入三個(gè)參數(shù),分別是開(kāi)始位置、0(要?jiǎng)h除的元素?cái)?shù)量)、插入的元素,返回空數(shù)組。

concat()方法會(huì)創(chuàng)建一個(gè)當(dāng)前數(shù)組的副本,然后再把它的參數(shù)添加到副本末尾,最后返回這個(gè)新構(gòu)建的數(shù)組,不會(huì)影響原始數(shù)組。

2)刪:pop()、shift()、splice()、slice()

pop()?方法用于刪除數(shù)組的最后一項(xiàng),同時(shí)減少數(shù)組的length值,返回被刪除的項(xiàng)。

shift() 方法用于刪除數(shù)組的第一項(xiàng),同時(shí)減少數(shù)組的length值,返回被刪除的項(xiàng)。

splice() 方法需要傳入兩個(gè)參數(shù),分別為開(kāi)始位置,刪除元素?cái)?shù)量,返回包含刪除元素的數(shù)組。

slice() 方法用于創(chuàng)建一個(gè)包含原有數(shù)組中一個(gè)或多個(gè)元素的新數(shù)組,不會(huì)影響原始數(shù)組。

3)改:splice()、map() 、reduce()

splice() 方法需要傳入三個(gè)參數(shù),分別是開(kāi)始位置,要?jiǎng)h除元素的數(shù)量,要插入的任意多個(gè)元素,返回刪除元素的數(shù)組,對(duì)原數(shù)組產(chǎn)生影響。

map() 方法返回一個(gè)新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值。map() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè),不會(huì)改變?cè)紨?shù)組。

function(currentValue, index,arr)執(zhí)行函數(shù)(必選)。currentValue必須。當(dāng)前元素的值;index可選。當(dāng)前元素的索引值;arr可選。當(dāng)前元素屬于的數(shù)組對(duì)象

thisValue對(duì)象作為該執(zhí)行回調(diào)時(shí)使用,傳遞給函數(shù),用作 "this" 的值。

reduce() 方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值(從左到右)開(kāi)始縮減,最終計(jì)算為一個(gè)值。

function(total,currentValue, index,arr)用于執(zhí)行每個(gè)數(shù)組元素的函數(shù)(必選)。

total必需。初始值, 或者計(jì)算結(jié)束后的返回值。

currentValue必需。當(dāng)前元素

currentIndex可選。當(dāng)前元素的索引。

arr可選。當(dāng)前元素所屬的數(shù)組對(duì)象。

initialValue可選。傳遞給函數(shù)的初始值。

4)查:indexOf() 、includes() 、find()、filter()、every()

indexOf() 返回要查找的元素在數(shù)組中的第一個(gè)索引位置,如果沒(méi)找到則返回-1。

a、element是要在數(shù)組中檢查的元素(必填)。

b、fromIndex是要從數(shù)組中搜索元素的啟始索引或位置(可選)。

includes() 返回要查找的元素在數(shù)組中的位置,找到返回true,否則false。

a、valueToFind是要在數(shù)組中檢查的值(必填);

b、fromIndex是要開(kāi)始從中搜索元素的數(shù)組中的索引或位置(可選)。

注意:includes和indexOf方法都使用嚴(yán)格的相等性('===')搜索數(shù)組。如果值的類型不同(例如4和'4'),它們將分別返回false和-1。

find() 返回第一個(gè)匹配的元素。如果數(shù)組中沒(méi)有項(xiàng)目符合條件,則返回undefined。

callback是在數(shù)組中的每個(gè)值上執(zhí)行的函數(shù),帶有三個(gè)參數(shù):

a、element-當(dāng)前被遍歷的元素(必填)

b、index-當(dāng)前遍歷的元素的索引/位置(可選)

c、array- 當(dāng)前數(shù)組(可選)

Array.filter()方法在數(shù)組中查找滿足特定條件的所有元素。返回的新數(shù)組,如果數(shù)組中沒(méi)有項(xiàng)目符合條件,則返回一個(gè)空數(shù)組。

a、newArray是返回的新數(shù)組。

b、array?是我們要進(jìn)行查找的數(shù)組本身。

c、callback?是應(yīng)用于數(shù)組每個(gè)元素的回調(diào)函數(shù)。

every() 方法用于檢測(cè)數(shù)組所有元素是否都符合指定條件。如果數(shù)組中檢測(cè)到有一個(gè)元素不滿足,則整個(gè)表達(dá)式返回false,且剩余的元素不會(huì)再進(jìn)行檢測(cè)。如果所有元素都滿足條件,則返回 true。 every() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)。every() 不會(huì)改變?cè)紨?shù)組。

總結(jié):

如果你想找到在符合特定條件的陣列中的所有項(xiàng)目,使用filter。

如果你想檢查是否至少有一個(gè)項(xiàng)目符合特定的條件,請(qǐng)使用find。

如果你想檢查一個(gè)數(shù)組包含一個(gè)特定的值,請(qǐng)使用includes。

如果要在數(shù)組中查找特定項(xiàng)目的索引,請(qǐng)使用indexOf。

5)排序方法:reverse() 、sort()

reverse() 方法用于顛倒數(shù)組中元素的順序。

sort()方法接受一個(gè)比較函數(shù),用于判斷哪個(gè)值應(yīng)該排在前面。

6)轉(zhuǎn)換方法:join()

join() 方法接收一個(gè)參數(shù),即字符串分隔符,返回包含所有項(xiàng)的字符串。

7)迭代方法:some()、every()、forEach()、filter()、map()

some() 方法對(duì)數(shù)組每一項(xiàng)都運(yùn)行傳入的函數(shù),如果有一項(xiàng)函數(shù)返回 true ,則這個(gè)方法返回 true

every() 方法對(duì)數(shù)組每一項(xiàng)都運(yùn)行傳入的函數(shù),如果每一項(xiàng)函數(shù)都返回 true ,則這個(gè)方法返回 true

forEach() 方法對(duì)數(shù)組每一項(xiàng)都運(yùn)行傳入的函數(shù)執(zhí)行某項(xiàng)操作,沒(méi)有返回值。foreach()不能使用break和continue。它實(shí)現(xiàn)break效果可以通過(guò)拋出異常的方式,實(shí)現(xiàn)continue的效果可以直接使用return。

filter() 方法對(duì)數(shù)組每一項(xiàng)都運(yùn)行傳入的函數(shù),過(guò)濾函數(shù)返回?true?的項(xiàng),并組成數(shù)組之后返回

map() 方法對(duì)數(shù)組每一項(xiàng)都運(yùn)行傳入的函數(shù),返回由每次函數(shù)調(diào)用的結(jié)果構(gòu)成的數(shù)組。一個(gè)和原數(shù)組長(zhǎng)度相等的數(shù)組。

題目1:查找指定元素在數(shù)組中的個(gè)數(shù)?

a、用 filter 返回刪除的數(shù)組

b、用 map 循環(huán),判斷條件,變量++

c、用 reduce 返回累積值

題目2:計(jì)算數(shù)組中每個(gè)元素出現(xiàn)的次數(shù)

a、使用reduce方法

b、使用map統(tǒng)計(jì)

2、Javscript字符串的常用方法

1)增

除了常用的+以及${}進(jìn)行字符串拼接之外,還可以通過(guò)contact()方法用于講一個(gè)或多個(gè)字符串拼接成一個(gè)新字符串。

2)刪:substr()、slice()、substring()

string.substr(start,length) 方法可在字符串中抽取從 開(kāi)始下標(biāo)開(kāi)始的指定數(shù)目的字符。length子串中的字符數(shù)。必須是數(shù)值。如果省略了該參數(shù),那么返回從 stringObject 的開(kāi)始位置到結(jié)尾的字串。

slice(start, end) 方法可提取字符串的某個(gè)部分,并以新的字符串返回被提取的部分。使用 start(包含) 和? end(不包含)參數(shù)來(lái)指定字符串提取的部分。

substring(from, to) 方法用于提取字符串中介于兩個(gè)指定下標(biāo)之間的字符。返回的子串包括開(kāi)始處的字符,但不包括結(jié)束 的字符。

3)改:不改變?cè)凶址瑒?chuàng)建一個(gè)字符串副本

trim()、trimLeft()、trimRight() 方法用于刪除前、后或前后所有空格符。

repeat() 方法表示將字符串復(fù)制多少次,然后返回。接受一個(gè)整數(shù)參數(shù)。

toLowerCase()、toUpperCase()方法用于大小寫(xiě)轉(zhuǎn)換。

4)查:charAt()、indexOf()、startWith()、includes()

charAt() 方法返回給定索引位置的字符。需傳入一個(gè)整數(shù)參數(shù)。

indexOf() 方法返回某個(gè)字符在字符串中的位置。需傳入一個(gè)字符。

startWith() 方法返回一個(gè)布爾值,判斷字符串是否以傳入的字符開(kāi)頭。

includes() 方法返回一個(gè)布爾值,判斷字符串是否包含傳入的字符。

5)轉(zhuǎn)換方法:split()

split() 方法把字符串按照指定的分隔符,返回一個(gè)數(shù)組。

6)匹配方法:match()、search()、replace()

match() 方法接受一個(gè)參數(shù)(正則表達(dá)式字符串或者正則表達(dá)式對(duì)象)。返回是一個(gè)數(shù)組。

search() 方法接受一個(gè)參數(shù)(正則表達(dá)式字符串或者正則表達(dá)式對(duì)象)。返回是布爾值。

replace() 方法接受兩個(gè)參數(shù),第一個(gè)是匹配的內(nèi)容,第二個(gè)是替換的元素。替換的是第一次匹配到的。

如何去除字符串中的最后一個(gè)字符?

有三種方法: str.slice(0,str.length-1)、substr(0,length-1)、str.substring(0,str.length-1)

js 獲取字符串最后一個(gè)字符?

有三種:str.charAt(str.length-1)、str.substr(str.length-1,1)、 str.substring(str.length-1) 、str.slice(str.length-1)、let?res?=?str.split("");res[str.length?-?1]。

1)slice(start,end)

start : 要抽取的片斷的起始下標(biāo)。如果是負(fù)數(shù),則該參數(shù)規(guī)定的是從字符串的尾部開(kāi)始算起的位置。

end:要抽取的片段的結(jié)尾的下標(biāo)。若未指定此參數(shù),則要提取的子串包括 start 到原字符串結(jié)尾的字符串。如果該參數(shù)是負(fù)數(shù),那么它規(guī)定的是從字符串的尾部開(kāi)始算起的位置。

2)substr(start,length)

start : 必需。要抽取的子串的起始下標(biāo)。必須是數(shù)值。如果是負(fù)數(shù),那么該參數(shù)聲明從字符串的尾部開(kāi)始算起的位置。

length : 可選。子串中的字符數(shù)。必須是數(shù)值。如果省略了該參數(shù),那么返回從 stringObject 的開(kāi)始位置到結(jié)尾的字串。

3)substring(start,stop)

與 slice() 和 substr() 方法不同的是,substring() 不接受負(fù)的參數(shù)

start : 必需。一個(gè)非負(fù)的整數(shù),規(guī)定要提取的子串的第一個(gè)字符在 stringObject 中的位置

stop : 可選。一個(gè)非負(fù)的整數(shù),比要提取的子串的最后一個(gè)字符在 stringObject 中的位置多 1。

js字符串拼接有哪些方法

1)使用 + 運(yùn)算符;

2)使用concat()方法;

3)使用 join 方法。

3、Object的常用方法

1)Object.values():返回一個(gè)對(duì)象屬性值的數(shù)組。

2)Object.keys():返回一個(gè)對(duì)象屬性名的數(shù)組。

3)Object.entries():創(chuàng)建一個(gè)數(shù)組,其中包含一個(gè)對(duì)象的鍵/值對(duì)數(shù)組。

4)Object.is():相等運(yùn)算符(==)和嚴(yán)格相等運(yùn)算符(===)。它們都有缺點(diǎn),前者會(huì)自動(dòng)轉(zhuǎn)換數(shù)據(jù)類型,后者的NaN不等于自身,以及+0等于-0,Object.is就是用來(lái)解決這個(gè)問(wèn)題,與“===”基本一致。

5)Object.assign()?淺拷貝:用于對(duì)象的合并。

6)Object spread (對(duì)象展開(kāi)):展開(kāi)一個(gè)對(duì)象,允許向一個(gè)對(duì)象添加新的屬性和值。

4、偽數(shù)組怎么轉(zhuǎn)數(shù)組

偽數(shù)組:無(wú)法調(diào)用數(shù)組的方法,但是有l(wèi)ength屬性,又可以索引獲取內(nèi)部項(xiàng)的數(shù)據(jù)結(jié)構(gòu)。

假設(shè)這里有個(gè)偽數(shù)組:fakeArr。

1)for循環(huán),把類數(shù)組的每一項(xiàng)都push到真正的數(shù)字arr1中

2)使用數(shù)組的方法slice

slice() 方法用于創(chuàng)建一個(gè)包含原有數(shù)組中一個(gè)或多個(gè)元素的新數(shù)組。使用call或者apply指向偽數(shù)組。

3)使用原型繼承

4)ES6的?...擴(kuò)展運(yùn)算符

5) ES6中數(shù)組的Array.from方法

使用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容