国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - javascript的hashCode函數實現代碼小結

javascript的hashCode函數實現代碼小結

2021-08-20 15:40JS教程網 JavaScript

網上找了好一輪,找到個比較像樣而且足夠短的 hashCode 實現,是從 Java 的 hashCode 中借鑒而得的。原理見 Java hashCode() ,也可以跟這里的 Java String 的源碼 參照對比一下

為了使用的方便,稍稍再改良了一下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
function hashcode(str) {
 var hash = 0, i, chr, len;
 if (str.length === 0) return hash;
 for (i = 0, len = str.length; i < len; i++) {
  chr  = str.charCodeAt(i);
  hash = ((hash << 5) - hash) + chr;
  hash |= 0; // Convert to 32bit integer
 }
 return hash;
}
 
hashcode("this is a string")
//-1853110172

這里接受的參數是一個 String,其它類型怎么辦?可以先做一個統一的處理,比如

hashcode(JSON.stringify(obj))
序列化之后再使用 hashCode 函數,基本所有類型數據都通吃,除了含有循環嵌套的對象。

PS:
函數實現中有一行使用了 “|” 運算符,只是利用 Bitwise 運算符轉換參數為 32bit,用來確保結果是個 32位整數。

這里是Java的直接替代品字符串.hashCode()用Javascript實現的方法。

我編寫這個函數是為了滿足工作中的一個需求。顯然,后端工程師認為hashCode()是一個標準函數。這個項目的一個障礙不僅是如何翻譯Java中用來生成hashCode()的數學公式,還包括如何強制Javascript使用32位整數數學(這不是一個小的壯舉)。

幸運的是,我發現Java支持位運算符,這些運算符被限制在32位整數數學中。

下面是Javascript生成的字符串原型。使用這個原型,您可以簡單地對任何字符串調用.hashCode(),例如“some string”.hashCode(),并接收一個數字哈希代碼(更具體地說,是一個Java等效代碼),如1395333309。

?
1
2
3
4
5
6
7
8
9
10
String.prototype.hashCode = function(){
    var hash = 0;
    if (this.length == 0) return hash;
    for (i = 0; i < this.length; i++) {
        char = this.charCodeAt(i);
        hash = ((hash<<5)-hash)+char;
        hash = hash & hash; // Convert to 32bit integer
    }
    return hash;
}

下面是其它網友的補充

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
hashCode = function(str){
  var hash = 0;
  if (str.length == 0) return hash;
  for (i = 0; i < str.length; i++) {
    char = str.charCodeAt(i);
    hash = ((hash<<5)-hash)+char;
    hash = hash & hash; // Convert to 32bit integer
  }
  return hash;
}
 
djb2Code = function(str){
  var hash = 5381;
  for (i = 0; i < str.length; i++) {
    char = str.charCodeAt(i);
    hash = ((hash << 5) + hash) + char; /* hash * 33 + c */
  }
  return hash;
}
 
sdbmCode = function(str){
  var hash = 0;
  for (i = 0; i < str.length; i++) {
    char = str.charCodeAt(i);
    hash = char + (hash << 6) + (hash << 16) - hash;
  }
  return hash;
}
 
loseCode = function(str){
  var hash = 0;
  for (i = 0; i < str.length; i++) {
    char = str.charCodeAt(i);
    hash += char;
  }
  return hash;
}

以上就是javascript的hashCode函數實現代碼小結的詳細內容,更多關于javascript hashCode的資料請關注服務器之家其它相關文章!

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品国产精品三级精品av网址 | 综合久久久 | 中日韩av | 久久久久国产精品免费免费搜索 | 91久久91久久精品免观看 | 久久久一 | 国产精品自拍视频 | 欧美freesex交免费视频 | 亚洲国产成人91精品 | 天堂资源 | 久久在线视频 | 四虎影视 | 日韩福利视频导航 | 毛片免费在线播放 | 精品成人av | 成人综合站 | 午夜在线影院 | 一区在线视频 | 午夜国产| 久久人人爽人人爽人人片av不 | 中文字幕亚洲欧美日韩在线不卡 | 日韩一区二区在线电影 | 国产精品毛片在线 | 永久黄网站色视频免费 | 欧美精品一区二区三区在线 | 一级特黄bbbbb免费观看 | 在线观看欧美日韩 | 精品免费久久久久 | 欧美日韩精品一区二区三区蜜桃 | 欧美与黑人午夜性猛交久久久 | 国产成人av在线 | 亚洲国产二区 | 看日韩毛片 | 国产高清免费 | 在线91| 国产精品视频久久久 | 久久久精品蜜桃 | 亚洲视频在线观看 | 91精品国产一区二区三区 | 国产精品高清在线观看 | 午夜黄色影院 |