Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   сравнение по значению (https://javascript.ru/forum/misc/52489-sravnenie-po-znacheniyu.html)

chippa 21.12.2014 21:20

сравнение по значению
 
Всем привет! Помогите пожалуйста, какой метод следует определить если нужно сравнить два объекта по значению, а не по ссылке?

Aetae 21.12.2014 21:50

В простейшем случае - привести к строке:
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)
)
(результат зависит от браузера)

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

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

chippa 22.12.2014 18:18

Спасибо большое.:thanks:

krutoy 22.12.2014 18:42

Aetae,
Я щитаю, эти фокусы с json -- в корне порочная практика. Это "не сработает" не только в приведенном вами случае, который Вы, почему-то называете рекурсивным, это не работает никогда. Вы сравниваете 2 разных объекта, допустим по сигнатуре они у вас совпали, но у них (могут быть) разные прототипы, разные области памяти, это семантически 2 разных объекта. Такие фокусы приводят не просто к быдлокоду, а к быдлокоду в терминальной стадии.

Aetae 22.12.2014 19:07

krutoy, бла бла бла. Я так и не делаю.)


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