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에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
개별 마크다운 블로그 페이지 만들기 - 13부이를 통해 개별 마크다운 기반 블로그 게시물 작성을 시작할 수 있습니다! 이 기사를 따르려면 을 시작점으로 사용하십시오. blog 페이지 디렉토리에 동적 페이지를 생성하여 시작할 수 있습니다. 이 파일[slug].j...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.