JS生成1000個數字加字母的不重複的隨機字串

2022-04-04 11:48:39 字數 1980 閱讀 7299

周五,快下班了,正收拾東西準備走人,專案經理突然讓我給他做個excel,1000個數字加字母組合的密碼,不重複,下班前給。

我直接懵了,excel不會,估計是要寫個什麼命令才能生成出來,於是想著有沒有什麼軟體可以生成,找了一會兒還是放棄了。等著下班回家呢,自己來吧。

廢話少說,上**。

<

div

id="keys"

>

div>

<

script

>

//生成十位字母加數字隨機數

vararr =;

for(

vari=0

;i<

1000

;i++

)

//去重

varukeys =;

for(

vari =0

; i

<

arr.length; i

++)

}//陣列處理,便於在html文件中顯示

varkeys =''

;

for(

vari=0

;i<

ukeys.length;i

++)

$('#keys

').html(keys);

console.log(

'去重後的密碼個數:'+

math.random()輸出0到1(包括0,不包含1)的隨機數。

tostring(16)將隨機數轉換為16進製制的字串。

substring(2, 10)擷取字串,因為隨機數大於等於0小於1,前兩位是 "0." , substring(2, 10)從第三位開始擷取十位。

去重。檢查陣列中的每乙個元素,如果當前元素在新的陣列中已經存在則忽略,否則加入倒新陣列中。最後得到的新陣列就是所要的不重複的密碼。

至此已經得到了1000個數字加字母組合的密碼,而且不重複,但是由於要拷貝到excel中,如果直接在控制台中列印然後複製,結果是這樣的:

randomcode.html:23   ud6202zt55

randomcode.html:23   oqu89g76tu

randomcode.html:23   m5cibg4jv1

因此需要對結果進行格式化以方便複製,如下:

即在每一項元素後面新增乙個換行標籤

, 然後在頁面中顯示出來,效果如下:

然後全選貼上到excel就ok啦。 

小結:生成金鑰陣列主要用到了js的 math.random() 、tostring(36)、substr(start, n)方法,關鍵在於數值轉換成16進製制字串的過程。

陣列去重主要用到了 indexof() 方法。陣列去重是個十分經典的問題,方法很多,個人認為使用indexof()逐項排除是最簡單的,其他的方法有時間也需要研究一下。

整個過程的**還是十分簡單和基礎的,照這樣的方法,只要系統承受得了,生成十萬個一百萬個數十位不重複的金鑰也是沒有任何問題的。

100億資料找出最大的1000個數字

這是網際網路領域乙個比較經典的演算法問題 top k 如何在巨大的資料中找出最大,或者訪問量最高的前10個,前100個或者前1000個資料。比如在2億使用者記錄中找出信用等級最高的,在上億個搜尋詞彙中找出被搜尋次數最高的10個關鍵字。前提是資料儲存在檔案中 一般遇到這個問題,第一反應會想到排序,但是...

100億資料找出最大的1000個數字

轉於 1 最容易想到的方法是將資料全部排序。該方法並不高效,因為題目的目的是尋找出最大的10000個數即可,而排序卻是將所有的元素都排序了,做了很多的無用功。2 區域性淘汰法。用乙個容器儲存前10000個數,然後將剩餘的所有數字一一與容器內的最小數字相比,如果所有後續的元素都比容器內的10000個數...

JS生成隨機的由字母數字組合的字串

最近有個需求,是需要生成3 32位長度的字母數字組合的隨機字串,另乙個是生成43位隨機字串。很有意思,研究了一下,基本上tostring後的引數規定可以是2 36之間的任意整數,不寫的話預設是10 也就是十進位制 此時返回的值就是那個隨機數。所以如果想得到一長串的隨機字元,則需使用乙個 10 且是奇...