亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

「JS小技巧」隨機(jī)不重復(fù)ID,標(biāo)簽替換,XML與字符串互轉(zhuǎn),取整

 

今天筆者整理了一份自己最近用到的一些小技巧分享給大家,雖然都是基礎(chǔ)技術(shù),不過在某些特殊時(shí)刻還蠻有用的,不至于加載一堆體積龐大的第三方庫(kù)。今天筆者用本文歸納一下分享給大家。本篇文章主要包含以下內(nèi)容:

  • 產(chǎn)生隨機(jī)不重復(fù)ID
  • 模板標(biāo)簽替換
  • 字符串與xml的互轉(zhuǎn)
  • 快速取整數(shù)

本篇文章預(yù)計(jì)時(shí)間3分鐘

 

產(chǎn)生隨機(jī)不重復(fù)ID

有時(shí)候在沒有第三方類庫(kù)的情況下,我們希望希望產(chǎn)生隨機(jī)且不重復(fù)的ID,這時(shí)我會(huì)使用「隨機(jī)數(shù)」搭配「時(shí)間戳」的方式,首先使用Math.random()產(chǎn)生0~1之間約16~17位數(shù)的隨機(jī)浮點(diǎn)數(shù),再通過toString(36)的方法縮短其位數(shù),并轉(zhuǎn)換為36進(jìn)位( 0~9、a~z ),若嫌太長(zhǎng)還可用substr方法進(jìn)行自行截取。

Math.random().toString(36).substr(2,n);
// 截取小數(shù)點(diǎn)后的部分,n在實(shí)際應(yīng)用中修改成你需要的位數(shù)

第二步使用Date.now()取得目前的毫秒數(shù),總共有13位數(shù),和上個(gè)方法一樣我們通過toString(36)的方法縮短其位數(shù),并轉(zhuǎn)換為36進(jìn)位,接著用substr自行截取需要的位數(shù)。

Date.now().toString(36).substr(4,n);
//由于前幾位固定,我們從第5位開始進(jìn)去截取獲取隨機(jī)數(shù),n在實(shí)際應(yīng)用中修改成你需要的位數(shù)

將隨機(jī)數(shù)的片段和時(shí)間戳的片段進(jìn)行組合,就能產(chǎn)生一個(gè)隨機(jī)不重復(fù)的id 。( 應(yīng)該說重復(fù)機(jī)率低到不可能重復(fù),如果你遇到重復(fù)的,恭喜你,建議你今天買彩票 )

Math.random().toString(36).substr(2,n) + Date.now().toString(36).substr(4,n);

模板標(biāo)簽替換

開發(fā)過程中有時(shí)會(huì)遇到要取出一段文字中的某些值,如果單純只是要「替換成別的值」,使用replace()的方法就能輕松實(shí)現(xiàn),對(duì)以下這段字符串來說,里面有幾個(gè)利用{{}}包覆的標(biāo)簽需要你替換,你會(huì)怎么做呢:

大家好,我的公眾號(hào)是{{name}},今年{{age}}歲了,創(chuàng)建于{{year}}年,歡迎你的關(guān)注

如果想要把所有「{{}}」兩個(gè)大括號(hào)內(nèi)的字替換成對(duì)應(yīng)的值,可以通過以下的方式進(jìn)行處理,核心的內(nèi)容就是replace()方法里的正規(guī)表達(dá)式/{{(.*?)}}/g,/{|}/g:

const text = '大家好,我的公眾號(hào)是{{name}},今年{{age}}歲了,創(chuàng)建于{{year}}年,歡迎你的關(guān)注’;
const obj = {
 name: '前端達(dá)人',
 age: 5,
 year: 2014
};
const result = text.replace(/{{(.*?)}}/g, e => {
 return obj[e.replace(/{|}/g,'')];
});

得到的結(jié)果就會(huì)是:「大家好,我的公眾號(hào)是前端達(dá)人,今年5歲了,創(chuàng)建于2014年,歡迎你的關(guān)注」。

String 轉(zhuǎn) XML、XML 轉(zhuǎn) String

在JAVAScript里如果直接讀取XML,得到的會(huì)是一些XML節(jié)點(diǎn)構(gòu)成的對(duì)象,如果要使用像是replace()..等字串的操作就必須轉(zhuǎn)換成字串String才行,下方程式可以很簡(jiǎn)單的將XML轉(zhuǎn)換成字串String,處理之后再轉(zhuǎn)回XML。(注:ie需要特殊處理,感興趣的可以去百度搜索)

XML轉(zhuǎn)字串String

xmlToString = (new XMLSerializer()).serializeToString(xmlObject);

字串String轉(zhuǎn)XML

stringToXML = (new DOMParser()).parseFromString(xmlString, "text/xml");

快速取整數(shù)

在JavaScript中取整數(shù),最常見的不外乎就是Math.round()四舍五入、Math.floor()返回小于等于給定數(shù)字的最大整數(shù)和 Math.ceil()函數(shù)返回大于或等于一個(gè)給定數(shù)字的最小整數(shù)(無(wú)條件進(jìn)位)三種方法,不過如果通過兩個(gè)「按位取反兩次」~~(兩個(gè)蚯蚓符號(hào)),也可以做到無(wú)條件舍去小數(shù)點(diǎn)的效果,這也是最快可以取整數(shù)的方法,下方的代碼會(huì)先取得一個(gè)0~100的隨機(jī)數(shù),然后取出整數(shù)的部分。

const num = Math.random() * 100;
console.log(num); // 輸出原本的隨機(jī)數(shù)
console.log(~~num); // 無(wú)條件舍去小數(shù)部分,類似Math.floor()

~是按位取反運(yùn)算,~~是取反兩次。在這里~~的作用是去掉小數(shù)部分,因?yàn)槲贿\(yùn)算的操作值要求是整數(shù),其結(jié)果也是整數(shù),所以經(jīng)過位運(yùn)算的都會(huì)自動(dòng)變成整數(shù)。與Math.floor()不同的是,它只是單純的去掉小數(shù)部分,不論正負(fù)都不會(huì)改變整數(shù)部分。

小節(jié)

今天JS小技巧的分享就到這里,希望能在工作中對(duì)你有所幫助,建議大家整理梳理自己日常工作中會(huì)用到的小方法和小技巧,維護(hù)到自己的方法類庫(kù)里,到時(shí)用的時(shí)候會(huì)事半功倍。在接下來的文章里,筆者會(huì)持續(xù)關(guān)注這方面的內(nèi)容,將會(huì)整理成文章分享到這個(gè)系列里,歡迎你持續(xù)關(guān)注與訂閱。

分享到:
標(biāo)簽:JS
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定