javascript의hashCode 함수 구현 코드 소결

2826 단어 javascripthashCode
사용하기 편리하도록 조금 더 개량하였다

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()가 표준 함수라고 생각한다.이 프로젝트의 장애는 자바에서hashCode()를 생성하는 데 사용되는 수학 공식을 어떻게 번역하는가뿐만 아니라, 자바스크립트에서 32비트 정수 수학을 사용하도록 강제하는 방법도 포함한다.
다행히도, 나는 자바가 비트 연산자를 지원하는데, 이 연산자들은 32비트 정수 수학에 제한되어 있다는 것을 발견했다.
다음은 Javascript에서 생성된 문자열의 원형입니다.이 원형을 사용하면 모든 문자열을 간단하게 호출할 수 있습니다.hashCode(), 예를 들어 "somestring".hashCode(), 그리고 139533309와 같은 숫자 해시 코드를 수신합니다.

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;
}
다음은 다른 네티즌의 보충입니다.

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 함수 구현 코드 소결에 대한 상세한 내용입니다. 더 많은javascripthashCode에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!

좋은 웹페이지 즐겨찾기