欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JavaScript如何判斷URL是否合法及全排列

今天小編給大家分享一下JavaScript如何判斷URL是否合法及全排列的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出米脂免費做網(wǎng)站回饋大家。

1、事件委托

效果演示

JavaScript如何判斷URL是否合法及全排列

要求

補全JavaScript代碼,要求如下:

  • 給"ul"標(biāo)簽添加點擊事件

  • 當(dāng)點擊某"li"標(biāo)簽時,該標(biāo)簽內(nèi)容拼接".“符號。如:某"li"標(biāo)簽被點擊時,該標(biāo)簽內(nèi)容為”.."

手撕代碼

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件委托</title></head><body>
    <ul>
        <li>.</li>
        <li>.</li>
        <li>.</li>
    </ul>

    <script type="text/javascript">
        // 補全代碼
        const ul = document.getElementsByTagName('ul')[0]

        ul.onclick = function (e) {
            const tar = (e || window.event).target            // 如果點擊的對象的名稱是li
            // localName 獲取標(biāo)簽名
            if (tar.localName === 'li') {
                tar.innerHTML = tar.innerHTML + '.'
            }
        }
    </script></body></html>

這道題挺簡單的,事件委托的原理實際就是利用了事件冒泡的機(jī)制。

事件冒泡:在一個對象上觸發(fā)某類事件(比如單擊click事件),如果此對象定義了此事件的處理程序,那么此事件就會調(diào)用這個處理程序,如果沒有定義此事件處理程序或者事件返回true,那么這個事件就會向這個對象的父級對象傳播,從里到外,直至它被處理(父級對象所有同類事件都將被激活),或者它到達(dá)了對象層次的最頂層,即document對象(有些瀏覽器)

在實際開發(fā)中,使用事件委托統(tǒng)一由父類捕捉并處理事件,這樣可以減少子類事件的重復(fù)定義。

2、判斷URL是否合法

要求

補全JavaScript代碼,要求以Boolean的形式返回字符串參數(shù)是否為合法的URL格式。

注意:協(xié)議僅為HTTP(S)

手撕代碼

const _isUrl = url => {
    // 補全代碼
    let reg = /^((https|http):\/\/)?(([A-Za-z0-9]+-[A-Za-z0-9]+|[A-Za-z0-9]+)\.)+([A-Za-z]{2,6})(:\d+)?(\/.*)?(\?.*)?(#.*)?$/g;
    return reg.test(url)}

這題就是考察了正則的應(yīng)用,運用了大量的正則知識,包括:

  • ^代表開頭

  • [A-Za-z0-9]表示匹配大小寫字母和數(shù)字

  • \/表示匹配/,因為在正則里/有其它含義,所以要匹配/需要在前面使用\對其進(jìn)行轉(zhuǎn)義

  • ? 等價于{0,1},表示出現(xiàn)一次或者不出現(xiàn)

  • +表示出現(xiàn)的次數(shù)至少為1

  • |(管道符),是的意思,表示匹配|兩邊內(nèi)容的其中任何之一

  • \.表示匹配.,與/一樣,要匹配.需要在前面使用\對其進(jìn)行轉(zhuǎn)義

  • {n,m} 表示出現(xiàn)n-m次

  • \d匹配數(shù)字

  • .就是[^\n\r\u2028\u2029],是通配符,表示幾乎任意字符

  • *表示出現(xiàn)次數(shù)為0次或者多次

  • .*就是匹配任何多個任意字符

  • $代表結(jié)尾

  • g代表全局匹配

合法的URL格式如下:

  • 協(xié)議部分http(s)可選: 表示為((https|http):\/\/)?

  • 域名部分 :表示為(([A-Za-z0-9]+-[A-Za-z0-9]+|[A-Za-z0-9]+)\.)+

  • 頂級域名,如com、cn等為2-6位:表示為([a-zA-Z]{2,6})

  • 端口部分:表示為(:\d+)?

  • 請求路徑如/login:表示為 (\/.*)?

  • 問號傳參及哈希值如?age=1、#dom:表示為 (\?.*)?(#.*)?

3、全排列

要求

補全JavaScript代碼,要求以數(shù)組的形式返回字符串參數(shù)的所有排列組合。
注意:

  • 字符串參數(shù)中的字符無重復(fù)且僅包含小寫字母

  • 返回的排列組合數(shù)組不區(qū)分順序

示例:

輸入:_permute('abc')
輸出:['abc','acb','bac','bca','cab','cba']

手撕代碼

全排列是比較常見的算法之一,解法有很多,這里給大家提供一個很巧妙的解法:

const _permute = string => {
    // 補全代
    const res = []; // 結(jié)果數(shù)組
    function search(str) {
    	console.log('1', 'str=' + str);
    	// 如果長度相等了就存放到結(jié)果數(shù)組中
        if (str.length === string.length) {
            res.push(str)
        }
        // 遍歷string
        for (let char of string) {
        	console.log('2', 'str=' + str, 'char=' + char);
        	// 如果str內(nèi)不含char,就使用str+char開始遞歸
            if (str.indexOf(char) < 0) {
                search(str + char)
            }
        }
    }
    search('')
    return  res;}

整體思路就是運用循環(huán)加遞歸,但這個過程中涉及到了JavaScript中循環(huán)的執(zhí)行機(jī)制,我們以執(zhí)行console.log(_permute('ab'));為例查看控制臺打印結(jié)果:

JavaScript如何判斷URL是否合法及全排列

search函數(shù)中的for循環(huán)執(zhí)行次數(shù)與string參數(shù)的長度相等,此時傳遞的string參數(shù)為ab,長度為2,即search函數(shù)中的for循環(huán)會執(zhí)行兩次。

這里需要注意的就是:for循環(huán)中執(zhí)行的遞歸(再次調(diào)用search函數(shù))并不會中斷當(dāng)前的for循環(huán),只會將還未執(zhí)行的循環(huán)暫且擱置,等到系統(tǒng)空閑時這些擱置的循環(huán)才會開始執(zhí)行javascript 引擎在同一時刻只能處理一個任務(wù),即單線程),具體過程見下方圖解:

JavaScript如何判斷URL是否合法及全排列

以上就是“JavaScript如何判斷URL是否合法及全排列”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文標(biāo)題:JavaScript如何判斷URL是否合法及全排列
分享網(wǎng)址:http://aaarwkj.com/article14/jegsde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、定制網(wǎng)站、網(wǎng)站營銷、網(wǎng)站收錄、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
av中文字幕一区二区三区| 欧美日韩亚洲国产专区精品| 亚洲福利网址一二三区| 麻豆片免费观看在线看| 国产精品三级一区二区三区| 欧美一级特黄免费大片| 韩国三级网站在线观看视频| 国产亚洲欧美日韩网站| 成人中文字幕日韩电影| 91大神午夜在线观看| 午夜福利片免费在线观看| 伊人性伊人情亚洲综合| 97资源视频在线播放| 一区二区三区国产不卡| 亚洲精品日韩av专区| 国产福利成人一区二区| 丝袜在线美腿视频网站| 伊人激情一区二区三区| 久久99精品久久久子伦| 日韩电影在线一本二本三本| 久久国产欧美日韩精品| 极品丝袜美腿一区二区| 天天日夜夜操人人干人人插| 中文字幕人妻系列东京热| 九九视频精品免费高清视频| 91亚洲精品一区二区三区| 国产日产亚洲欧美综合另类| 亚洲青青草原自拍偷拍| 久久精品国产亚洲av高清不卡| 欧美日韩亚洲国产极品 | 下载一个日韩暴力黄色录像| 日本高清不卡免费在线观看视频一二三区| 五月天亚洲激情综合av| 亚洲免费成人高清电影| 国产成人亚洲精品乱码| 日本经典三级在线视频| 国产美女亚洲精品久久久| 手机av在线 中文字幕| 强暴美女视频大全久久久| 欧美三级视频一区二区三区| 欧美激情亚洲一区二区|