많은 제 3 자 서식있는 텍스트 편집기 중 하나를 사용하여 편집 한 대량의 콘텐츠 (예 : 블로그 용 기사)를 포함 할 수있는 텍스트 영역이있는 양식이 있습니다. 자동 저장 기능과 같은 것을 구현하려고합니다. 변경된 경우 아약스를 통해 콘텐츠를 제출해야합니다. 그러나 옵션으로 가지고있는 편집자 중 일부는 "isdirty"플래그 또는 마지막 저장 이후 내용이 변경되었는지 확인할 수있는 "onchange"이벤트를 지원하지 않는다는 사실을 해결해야합니다.JavaScript의 큰 문자열과 해시 비교
그래서 임시 해결 방법으로, 마지막 저장 시점에서 변수의 복사본을 보관하고 (lastSaveContent이라고 부름) 현재 텍스트와 비교합니다. 자동 저장 (autosave) "기능이 (타이머에서) 실행되어 다른지 확인합니다. 그러나, 나는 매우 큰 문서를 가지고 갈 수있는 메모리의 양에 대해 걱정하고있다.
전체 문자열 대신 lastSaveContent 변수에 일종의 해시를 저장 한 다음 해시 값을 비교하는 것이 더 효율적입니까? 그렇다면이 요구 사항에 적합한 해시를 구현하는 jQuery 플러그인 또는 jQuery 플러그인을 사용하는 것이 좋습니다.
아마도 당신의 유스 케이스에서는 거의 발생하지 않을 것입니다. 그러나 자바 스크립트와 해시를 검색 할 때 여기에 도착하는 캐주얼 리더의 경우 두 해시 값을 비교하는 것이 중요하지 않습니다. 두 문자열을 비교할 때와 마찬가지로 해시가 충돌 할 수도 있고 두 개의 다른 문자열에 대해 같은 해시가 충돌 할 수도 있습니다. 따라서 많은 경우에 동일한 해시 값을 얻는다면 전체 비교를 수행해야합니다. –
좋은 지적. 또한 독자가 궁금해하는 경우 많은 컬렉션 API에서 발견되는 것과 같은 Hashtable 객체가 두 개의 키가 동일한 해시를 생성 할 때 이러한 충돌을 처리하는 기능을 포함하기 때문에 여전히 작동합니다. – user4815162342