原生JS的魅力(1)

@各位觀眾,好久不見(jiàn),不知有木有想人家?。。ㄍ弁弁郏?33333)這段時(shí)間一直想寫簡(jiǎn)書來(lái)著,但不知要寫些啥東西!終于憋出一個(gè)大招,雖然被虐的體無(wú)完膚,但還是想分享一下這個(gè)小知識(shí)點(diǎn)!嘎嘎!

接招

題目

寫一個(gè)方法,要求:給予兩個(gè)數(shù)組a1和a2,然后返回一個(gè)已經(jīng)排序的數(shù)組 r,其中數(shù)組 r 中的值是a1中的項(xiàng)并且能夠在a2中找到這些字母的片段!(畢竟英語(yǔ)太次,翻譯的太爛,各位看官多多包涵哈!==)

各位可以先思考,自己想想該怎么做!然后往下看?。?!


。
。

。
。

我的想法是:利用兩個(gè)循環(huán),然后判斷a1是否存在于a2之中,并且判斷取出來(lái)的a1是否包含于arr之中,最后返回排序好的arr!

代碼如下:

function inArray(array1,array2){
    var arr = [];
    for(var i in array1){
        for(var j in array2){
            if (array2[j].indexOf(array1[i])>-1 && arr.indexOf(array1[i]) == -1) {
                arr.push(array1[i]);
            }
        }
    }
    return arr.sort();
}

這里面用到了各種循環(huán)和判斷,感覺(jué)有那么一點(diǎn)麻煩!這也是一般人都能夠想到的!于是就看了大神到底是怎么想的?

大神代碼來(lái)了?。。?/h3>
function inArray(array1,array2){
    return array1.filter(function(str1){
        return array2.some(function(str2){
            return str2.indexOf(str1)>-1;
        })
    }).sort();

果然大神就是大神!利用了三個(gè)return和JS中已有的兩個(gè)迭代方法filtersome,就輕松搞定?。▍柡α宋业母纾。?/p>

摘自《JavaScript高級(jí)程序設(shè)計(jì)》

ECMAScript5 為數(shù)組定義了5個(gè)迭代方法。每個(gè)方法都接收兩個(gè)參數(shù):要在每一項(xiàng)上運(yùn)行的函數(shù)和(可選的)運(yùn)行該函數(shù)的作用域?qū)ο?-- 影響 this 的值。以下是這5個(gè)迭代方法的作用:
every():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果每一項(xiàng)都返回true,則返回true。
filter():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),返回該函數(shù)會(huì)返回 true 的項(xiàng)組成的數(shù)組。
forEach():對(duì)數(shù)組中每一項(xiàng)給定函數(shù),這個(gè)方法沒(méi)有返回值。
map():對(duì)數(shù)組中的每一項(xiàng)給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組。
some():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),如果該函數(shù)對(duì)任一項(xiàng)返回 true,則返回true。
以上方法都不會(huì)修改數(shù)組中的包含的值。

結(jié)合以上文檔來(lái)看,就不難理解大神寫的代碼了。

array1利用filter方法,array利用some方法,判斷str2是否存在于str1中,只要**str1存在于str2中,some方法就會(huì)返回true,存放于filter中的數(shù)組里面。最后利用sort方法進(jìn)行排序!得出結(jié)果。

總結(jié):從這個(gè)小題目中發(fā)現(xiàn)自己的基礎(chǔ)知識(shí)還是不牢固,對(duì)JS的基礎(chǔ)知識(shí)還不能融會(huì)貫通,以后加強(qiáng)這方面的練習(xí)吧!

雖九死一生,依舊勇往直前!??!

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,684評(píng)論 0 4
  • 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的 JavaScript 類型 使用基本類型和基本包裝類型 引用類型的...
    悶油瓶小張閱讀 782評(píng)論 0 0
  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解...
    上街買菜丶迷倒老太閱讀 1,504評(píng)論 0 20
  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解包。 uni...
    思?jí)鬚HP閱讀 2,135評(píng)論 1 24
  • smalltail閱讀 166評(píng)論 0 0

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