摘要:前言今天,把自己之前封裝過(guò)的一部分小功能操作分享出現(xiàn),都是一些可以說(shuō)是比較常用,實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,代碼又比較少的一些功能或操作,比如關(guān)鍵詞變色,數(shù)組打亂,數(shù)組去重等。關(guān)鍵詞變色這個(gè)功能很常見(jiàn),特別是在搜索引擎執(zhí)行搜索的時(shí)候。
1.前言
今天,把自己之前封裝過(guò)的一部分小功能操作分享出現(xiàn),都是一些可以說(shuō)是比較常用,實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,代碼又比較少的一些功能或操作,比如關(guān)鍵詞變色,數(shù)組打亂,數(shù)組去重等。
2.關(guān)鍵詞變色這個(gè)功能很常見(jiàn),特別是在搜索引擎執(zhí)行搜索的時(shí)候。其它不多說(shuō)了,直接上代碼
關(guān)鍵詞變色 前端工程師新人在前端的道路上還有很多路要走,比如一些剛在學(xué)校讀出來(lái)的前端,最需的是真正的看一場(chǎng)真實(shí)的前端開(kāi)發(fā)項(xiàng)目過(guò)程(個(gè)人覺(jué)得這個(gè)非常有必要),其次,前端的覆蓋面非常廣,要了解的知識(shí)也非常多,所以如果能得到過(guò)來(lái)人的前端工程師網(wǎng)的一些建議性的話,將是幫助很大的。以下摘自一個(gè)前端工程師過(guò)來(lái)人的一點(diǎn)感悟。
運(yùn)行一下
就是要這個(gè)效果!
實(shí)現(xiàn)原理和過(guò)程:首先,點(diǎn)擊按鈕的時(shí)候獲取文本框的value,通過(guò)以空格分割,變成一個(gè)數(shù)組(arr=key.split(/s+/);),然后把數(shù)組傳到createExp(),創(chuàng)建一個(gè)正則的字符,比如上面就是傳["前端","過(guò)來(lái)"],然后createExp()就會(huì)返回(前端|過(guò)來(lái)),再到就是通過(guò)創(chuàng)建一個(gè)正則(前端|過(guò)來(lái))/g,最后就是把#thediv的內(nèi)容進(jìn)行正則匹配,比如:所有‘前端’就會(huì)被替換成前端。
這里值得注意的一點(diǎn),就是,進(jìn)行正則匹配之前,一定要過(guò)濾掉內(nèi)容的html標(biāo)簽,避免影響下一次的運(yùn)行,如果不過(guò)濾,就是這個(gè)bug
大家都看到了吧,我只輸入‘過(guò)來(lái)’,結(jié)果‘前端’也變色了,那是因?yàn)槲逸斎搿^(guò)來(lái)’的時(shí)候,之前就輸入過(guò)‘前端’運(yùn)行了一次,下一次不清除就會(huì)有這個(gè)bug,清除了就沒(méi)事了!
打亂數(shù)組這個(gè),也是比較常用吧,上代碼
function upsetOrder(arrOld,num){ var result=[],_length=num||arrOld.length,arr; arr=Object.assign([],arrOld) for(var i=0,len=arr.length;i運(yùn)行一下
實(shí)現(xiàn)原理和過(guò)程:核心代碼就是result.push(arr.splice(Math.floor(Math.random()*arr.length),1)[0]);,這個(gè)的原理就是每一次往result里面push一個(gè)元素,這個(gè)元素是從arr里面隨便獲取的。
3.數(shù)組去重
這里值得注意的一點(diǎn),arr=Object.assign([],arrOld)這行代碼就是為了,打亂的結(jié)果不影響原來(lái)的數(shù)組。比如傳進(jìn)來(lái)時(shí)[1,2,3],執(zhí)行了原來(lái)的數(shù)組還是[1,2,3]。只是產(chǎn)生了一個(gè)新的打亂的數(shù)組而已。數(shù)組去重,相信大家遇到的就多了,無(wú)論是面試題還是項(xiàng)目需要,多少都會(huì)遇到過(guò)。去重的方法很多,我主要說(shuō)兩種方法。
第一種function removeReapt(arrOld){ var arr=[]; for(var i=0,len=arrOld.length;i運(yùn)行一下
這個(gè)的實(shí)現(xiàn)原理和過(guò)程沒(méi)什么好說(shuō)的了,就是遍歷原來(lái)的數(shù)組arrOld,判斷arr有沒(méi)有當(dāng)前遍歷到的數(shù)組元素,沒(méi)有加添加進(jìn)去。
第二種第一種方法,表面上看是一層循環(huán),但實(shí)際可以說(shuō)是兩層,至少在運(yùn)行速度上是兩層循環(huán)的速度。因?yàn)?b>indexOf這個(gè)方法也是逐個(gè)比較的。所以我就再說(shuō)第二種方法。
function removeReapt(arrOld){ var arr= []; var json = {}; for(var i = 0,len = arrOld.length; i < len; i++){ if(!json[arrOld[i]]){ arr.push(arrOld[i]); json[arrOld[i]] = 1; } } return arr; }運(yùn)行一下
效果一下樣!實(shí)現(xiàn)原理和過(guò)程:遍歷原數(shù)組。每次從原數(shù)組中取出一個(gè)元素,然后到對(duì)象中去訪問(wèn)這個(gè)屬性,如果能訪問(wèn)到值,則說(shuō)明重復(fù),如果訪問(wèn)不到,就是arr還沒(méi)有沒(méi)有這元素,就添加進(jìn)去,同時(shí)把這個(gè)元素作為json的一個(gè)屬性,并賦值為1。這個(gè)方法,我個(gè)人覺(jué)得比較效率比第一種方法好,也不安按理解,推薦這個(gè)寫(xiě)法。
后續(xù)關(guān)于js是實(shí)用或者常用的小功能操作,今天先到這里,以后再寫(xiě)其它的,希望能幫到大家!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/83517.html
摘要:我自己封裝這個(gè),并不是我有造輪子的習(xí)慣,而是,都是一些常用,但是零散的小實(shí)例,網(wǎng)上基本沒(méi)有插件。,因?yàn)榱闵⒌男?shí)例,涉及到的有字符串,數(shù)組,對(duì)象等類(lèi)型,就算找到插件,在項(xiàng)目引入的很有可能不止一個(gè)插件。都是簡(jiǎn)單的代碼,封裝也不難。 1.前言 因?yàn)楣咀罱?xiàng)目比較忙,沒(méi)那么多空余的事件寫(xiě)文章了,所以這篇文章晚了幾天發(fā)布。但是這也沒(méi)什么關(guān)系,不過(guò)該來(lái)的,總是會(huì)來(lái)的。好了,其他的不多說(shuō)的,大家...
摘要:如有感興趣,請(qǐng)自行查閱相關(guān)文檔,進(jìn)一步的了解前端的性能優(yōu)化單行文本去重單行文本去重可兼容不支持接口的瀏覽器這里應(yīng)該很好明白是在干什么吧需要傳入一個(gè)初始空字符串參數(shù),否則你將得到的是一個(gè)字符串被拆分后的數(shù)組。 之前偶然看到一篇使用正則實(shí)現(xiàn)字符去重及多行去重的文章。感覺(jué)寫(xiě)的有點(diǎn)糙,而且性能也不夠高,對(duì)新手的使用和理解都有一點(diǎn)難度。于是忍不住就搞了一個(gè)比較可愛(ài)的出來(lái)。而且不是一般的可愛(ài),因?yàn)?..
摘要:而數(shù)組元素去重是基于運(yùn)算符的。而如果有迭代函數(shù),則計(jì)算傳入迭代函數(shù)后的值,對(duì)值去重,調(diào)用方法,而該方法的核心就是調(diào)用方法,和我們上面說(shuō)的方法一異曲同工。 Why underscore (覺(jué)得這部分眼熟的可以直接跳到下一段了...) 最近開(kāi)始看 underscore.js 源碼,并將 underscore.js 源碼解讀 放在了我的 2016 計(jì)劃中。 閱讀一些著名框架類(lèi)庫(kù)的源碼,就好像...
摘要:排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計(jì)數(shù)組各個(gè)元素出現(xiàn)的次數(shù),字符串各個(gè)字符的出現(xiàn)次數(shù),獲取地址鏈接的各個(gè)參數(shù)以后會(huì)記錄自己解決過(guò)和遇到過(guò)的算法相關(guān)的題,系列一就以常見(jiàn)的開(kāi)篇吧。 排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計(jì)數(shù)組各個(gè)元素出現(xiàn)的次數(shù), 字符串各個(gè)字符的出現(xiàn)次數(shù),獲取地址鏈接的各個(gè)參數(shù) 以后會(huì)記錄自己解決過(guò)和遇到過(guò)的算法相關(guān)的題,系列一就以常見(jiàn)的開(kāi)篇吧。 排序 本來(lái)想多列幾個(gè)排序方法,但是其它都...
摘要:數(shù)組去重是校招面試的必考知識(shí)點(diǎn)。以下就是筆者所實(shí)現(xiàn)的數(shù)組去重的幾種簡(jiǎn)單的方式。結(jié)合實(shí)現(xiàn)這種方法的關(guān)鍵點(diǎn)就是判斷是否相同的時(shí)候不要忽略對(duì)元素類(lèi)型的判斷。以上就是筆者所想到的幾個(gè)數(shù)組去重的方式大家如果有更好的方法歡迎留言。 數(shù)組去重,是校招面試的必考知識(shí)點(diǎn)。簡(jiǎn)單的說(shuō),數(shù)組去重就是將一個(gè)數(shù)組中的相同的元素刪除,只保留其中的一個(gè)。這里的相同其實(shí)是一個(gè)陷阱,有好多同學(xué)只認(rèn)為值相等即為相同,而忽略...
閱讀 740·2023-04-26 01:42
閱讀 3286·2021-11-22 11:56
閱讀 2489·2021-10-08 10:04
閱讀 958·2021-09-24 10:37
閱讀 3198·2019-08-30 15:52
閱讀 1844·2019-08-29 13:44
閱讀 552·2019-08-28 17:51
閱讀 2217·2019-08-26 18:26