日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

「JS小技巧」隨機不重復ID,標簽替換,XML與字符串互轉,取整

 

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

  • 產生隨機不重復ID
  • 模板標簽替換
  • 字符串與xml的互轉
  • 快速取整數

本篇文章預計時間3分鐘

 

產生隨機不重復ID

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

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

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

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

將隨機數的片段和時間戳的片段進行組合,就能產生一個隨機不重復的id 。( 應該說重復機率低到不可能重復,如果你遇到重復的,恭喜你,建議你今天買彩票 )

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

模板標簽替換

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

大家好,我的公眾號是{{name}},今年{{age}}歲了,創建于{{year}}年,歡迎你的關注

如果想要把所有「{{}}」兩個大括號內的字替換成對應的值,可以通過以下的方式進行處理,核心的內容就是replace()方法里的正規表達式/{{(.*?)}}/g,/{|}/g:

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

得到的結果就會是:「大家好,我的公眾號是前端達人,今年5歲了,創建于2014年,歡迎你的關注」。

String 轉 XML、XML 轉 String

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

XML轉字串String

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

字串String轉XML

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

快速取整數

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

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

~是按位取反運算,~~是取反兩次。在這里~~的作用是去掉小數部分,因為位運算的操作值要求是整數,其結果也是整數,所以經過位運算的都會自動變成整數。與Math.floor()不同的是,它只是單純的去掉小數部分,不論正負都不會改變整數部分。

小節

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

分享到:
標簽:JS
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定