Zerstoren
@Zerstoren

Как узнать хэш сумму объекта в JavaScript?

В общем стоит такая задача.


Есть объект (словарь) в котором содержатся произвольные данные, но не очень большие. Мне нужно узнать хэш сумму данного объекта.


Зачем мне это надо:

У меня есть карта, которая рисуется Чанками (куски 2048*1024 пикселя), пользователь может перемещать камеру по карте и довольно быстро. А каждые 5 секунд перерисовывать карту не интересно, нужно подключить кэширование и определять, не изменились ли какие-то объекты и их позиции.


Мысль наталкивает только на хэш суммы. Если вычисление хэш суммы будет более медлительным чем отрисовка такой карты, то тогда не имеет смысла вычислять хэш суммы объектов.
  • Вопрос задан
  • 7533 просмотра
Пригласить эксперта
Ответы на вопрос 2
Assorium
@Assorium
hash = function (str) {
	var hash = 0;
	var str = String(str);
	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;
}
Ответ написан
vool
@vool
Разработчик
Хеширует строки, цифры, и объекты
let hash = function (str) {
  var hash = 0;
  if (typeof str == "object") {
    var str = JSON.stringify(str);
    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
    }
  } else {
    var str = String(str);
    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;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы