js原生方法的使用(面試必問)

來源:互聯網
上載者:User

標籤:blog   http   io   ar   使用   sp   for   strong   on   

廢話不說,直接上題。

slice(),接收兩個參數,第一個為開始index(從0開始),第二個為結束的index(也是從0開始,但是不包括index本身,只到index-1)。傳回值是截取的數組,原數組不變化。傳第三個參數,沒有作用。

splice(),接收無數個參數,第一個為開始的index(從0開始),第二個為刪除的元素的個數(0代表不刪除,1代表刪除一個...),第三個為添加的元素,第四個也為添加的元素.....,傳回值是刪除的元素組成的數組,如果刪除了0個就返回空數組,原數組會被改變成被操作後的數組(這裡需要注意一個問題,比如:arr =[1,2,3],arr.splice(1,0,4),arr會變成[1,4,2,3],添加的4是在2的前面插入)。

以上兩個方法的區別和應用,面試官會問。

forEach方法(除了數組對象之外,forEach 方法可由具有 length 屬性且具有已按數字編製索引的屬性名稱的任何對象使用。比如:{0:"a",1:"b",length:2})

對於數組中出現的每個元素,forEach方法都會調用callback函數一次(採用升序索引順序),但不會為數組中缺少的元素調用回呼函數([1,2,"",3],第三個選項不會執行callback)。

arr.forEach(callback,thisArg),只接受兩個參數,一個是回調方法,一個是context.callback必選, 最多可以接受三個參數的函數。 對於數組中的每個元素,forEach 都會調用callbackfn 函數一次。thisArg可選, callbackfn 函數中的 this 關鍵字可引用的對象,如果省略 thisArg,則 undefined將用作 this 值。這時你回答出來這些已經覺得自己還可以了,然後面試官會問你那callback的三個參數是什嗎?

回呼函數的文法如下所示:

function callback(value, index, array1),value:數組元素的值。index:數組元素的數字索引。array1:包含該元素的數組對象。可以在回調方法中改變原數組。

這個方法的作用就是:利用數組中的值做一些應用,比如:顯示出來,累加等等。

這裡大家可以去區分一下$("div"),jQuery對象的each方法。很像,但是在回調方法調用時,傳參不一樣,請仔細查看。

連結地址:http://www.cnblogs.com/chaojidan/p/4141413.html

map方法,跟forEach方法差不多,唯一的區別是,arr.map(callback,thisArg),有傳回值,傳回值是:對每個數組中的元素執行callback後,callback返回的值組成的數組。

當然原數組也不會改變,除非你在callback(value, index, array1)中直接改變array1。

這個方法的作用就是:把數組組裝成其他的形式,比如:對數組中的每一項加1,或者平方等等。

這裡大家可以去區分下$("div"),jQuery對象的map方法,也很像,但是傳參不一樣,同時,回調方法調用時,傳參也不一樣。請仔細查看。

連結地址:http://www.cnblogs.com/chaojidan/p/4141413.html

indexOf方法:接收兩個參數:searchElement:必需。 要在 array1 中定位的值。fromIndex:可選。 用於開始搜尋的數組索引, 如果省略 fromIndex,則從索引 0 處開始搜尋。 如果 fromIndex 大於或等於數組長度,則返回 -1。 如果 fromIndex 為負,則搜尋從數組長度加上 fromIndex 的位置處開始。如果計算所得的索引小於 0,則搜尋整個數組。數組元素將與 searchElement 值進行全等比較,與 === 運算子類似。

lastIndexOf:接收兩個參數:searchElement:必需。 要在 array1 中定位的值。fromIndex:可選。 用於開始搜尋的數組索引, 如果省略 fromIndex,則搜尋將從數組中的最後一個索引處開始。 如果 fromIndex 大於或等於數組長度,則搜尋整個數組。 如果 fromIndex 為負,則搜尋從數組長度加上 fromIndex 的位置處開始。 如果計算所得的索引小於 0,則返回 -1。數組元素將與 searchElement 值進行全等比較,與 === 運算子類似。

 最後就是一個很重要的方法,面試經常問到的方法:

replace方法:它會跟正則一起出題。它接收兩個參數,比如:str.replace(str1,str2);

str1必需。規定子字串或要替換的模式的 RegExp 對象。請注意,如果該值是一個字串,則只會替換一個。比如:"abbc".replace("b","d")  -> 返回"adbc"。

str2必需。規定了替換文本或產生替換文本的函數。

傳回值,就是替換之後的字串。原字串不改變。

如果需要把匹配到的字元全部替換,需要使用正則"abbc".replace(/b/g,"d")   -> 返回"addc"。

replace() 方法的參數 str2可以是函數。在這種情況下,每個匹配都調用該函數,它返回的字串將作為替換文本使用。該函數的第一個參數是匹配模式的字串。接下來的參數是與模式中的子運算式匹配的字串,可以有 0 個或多個這樣的參數。接下來的參數是一個整數,聲明了匹配在 str中出現的位置。最後一個參數是 str本身。

比如:"abcd".replace(/(a)(b)(c)/g,function(match,$1,$2,$3,index,str){  match:abc(匹配到的字串),$1:a(匹配到的第一個子運算式),以此類推,如果沒有子運算式,就不會有這些參數,就直接是index。  index:0(匹配到的字串在原始字串中的位置,也就是"abc"在"abcd"中的位置),最後一個是str:"abcd"(原始字串)})

此方法功能很強大,推薦精讀,有時可以讓面試官眼前一亮。

 

 

加油!

js原生方法的使用(面試必問)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.