Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.12.2014, 21:20
Новичок на форуме
Отправить личное сообщение для chippa Посмотреть профиль Найти все сообщения от chippa
 
Регистрация: 21.12.2014
Сообщений: 2

сравнение по значению
Всем привет! Помогите пожалуйста, какой метод следует определить если нужно сравнить два объекта по значению, а не по ссылке?
Ответить с цитированием
  #2 (permalink)  
Старый 21.12.2014, 21:50
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

В простейшем случае - привести к строке:
JSON.stringify(obj1) === JSON.stringify(obj2)
.

Но во-первых не сработает если объект рекурсивный, во вторых:
var foo = {
    a: 1,
    b: 2
};

var bar = {
    b: 2,
    a: 1
}
alert(
    JSON.stringify(foo) === JSON.stringify(bar)
)
(результат зависит от браузера)

В сложном случае: писать свою функцию или искать готовую.

А на самом деле - прекратить сравнивать объект и сравнивать таки нужные значения.)
__________________
29375, 35

Последний раз редактировалось Aetae, 21.12.2014 в 21:54.
Ответить с цитированием
  #3 (permalink)  
Старый 22.12.2014, 18:18
Новичок на форуме
Отправить личное сообщение для chippa Посмотреть профиль Найти все сообщения от chippa
 
Регистрация: 21.12.2014
Сообщений: 2

Спасибо большое.
Ответить с цитированием
  #4 (permalink)  
Старый 22.12.2014, 18:42
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Aetae,
Я щитаю, эти фокусы с json -- в корне порочная практика. Это "не сработает" не только в приведенном вами случае, который Вы, почему-то называете рекурсивным, это не работает никогда. Вы сравниваете 2 разных объекта, допустим по сигнатуре они у вас совпали, но у них (могут быть) разные прототипы, разные области памяти, это семантически 2 разных объекта. Такие фокусы приводят не просто к быдлокоду, а к быдлокоду в терминальной стадии.
Ответить с цитированием
  #5 (permalink)  
Старый 22.12.2014, 19:07
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

krutoy, бла бла бла. Я так и не делаю.)
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение дат Эдди jQuery 5 01.08.2014 16:13
Как обратиться к значению свойства SA1992 Общие вопросы Javascript 7 17.12.2013 15:36
Присваивание по ссылке и значению hrundel Общие вопросы Javascript 6 25.08.2013 17:06
Выделить option в списке по значению value 1lider Общие вопросы Javascript 8 20.04.2013 11:24
Сравнение двух строк drac0Sha Общие вопросы Javascript 17 20.08.2012 19:45