Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сравнение объектов (https://javascript.ru/forum/misc/10792-sravnenie-obektov.html)

Cepin 21.07.2010 10:43

Сравнение объектов
 
Собственно вопрос был озвучен в названии темы.
Я так полагая что штатные операторы сравнения == не будут правильно работать и нужно писать свою рекурсивною функцию для сравнения свойств объектов.

Может есть готовые решения или это можно сделать стандартными возможностями языка?

Octane 21.07.2010 10:48

Нету стандартных средств, ни сравнения, ни копирования.

Kolyaj 21.07.2010 10:53

А можно узнать, где вам это понадобилось?

Cepin 21.07.2010 11:00

Есть хешовый объект, в котором хранятся настройки. Во время нахождения пользователя на сайте, некоторые свойства от настроек могут изменится. Если какие-то свойства изменились, то я передаю объект на сервер через ajax.

Я лично отталкивался от такой логики:
1) получаем дефолтный хеш настроек.
2) клонируем его в другой хеш (функцию клонирования уже отыскал в сети)
3) используем функцию обновления данных в хеше, если нужно.
4) в самом конце сравниваем начальный хеш с конечным ,если изменился, тогда передаю на сервер данные.

Весь смысл моего извращения, чтобы не дергать каждый раз запрос на сервер ,а отсылать его тогда, когда реально были изменены данные.

Вот. Хотелось бы услышать ваши мысли, вдруг моя логика хромает и есть варианты попроще.

Kolyaj 21.07.2010 11:03

Цитата:

Сообщение от Cepin
Если какие-то свойства изменились, то я передаю объект на сервер через ajax.

В какой момент?

Vulkan 21.07.2010 11:04

Cepin, ну а если в массив, а там уже сравнивать, проверять каждое значение на совпадение или несовпадение?

Cepin 21.07.2010 11:07

Я пишу userscript. И данные которые будут менятся, изначально мне недоступны, они выдаются сервером..но не каждый раз, а примерно через 40 минут или через день. Затем мне нужно хеш с настройками передать на сервер.

Kolyaj 21.07.2010 11:10

Но меняет-то их ваш код?

Cepin 21.07.2010 11:21

Нет, мой код ничего не меняет. Он просто использует настройки и если есть необходимость, он их обновляет. Это все идет как внешнее дополнение. Поэтому я придерживаюсь позиции: если обновились данные, тогда их следует обновить. Вообщем по сути, писать свою функцию сравнения, верно?

Kolyaj 21.07.2010 11:28

Вы же их как-то сериализируете перед отправкой на сервер. Вот и сравнивайте строки, а не объекты.


Часовой пояс GMT +3, время: 08:14.