Сравнение объектов
function deepEqual(a, b) { if (a === b) { return true; } if (a == null && typeof(a) !== 'object' || b == null && typeof(b) !== 'object') { return false; } var equal = true; for (var key in a) { if (typeof(a) === 'object' && typeof(b) === 'object') { if (!deepEqual(a[key], b[key])) { equal = false; } } else if (a !== b) { equal = false; } } return equal; } var obj = { here: { is: "an" }, object: 2 }; alert(deepEqual(obj, { here: { is: "an" }, object: 2 })); Почему когда я изменяю 'an' то функция показывает, что объекты не равны. А если меняю '2' на другое число, то функция всегда возвращает true |
dakociha,
строку 2 выкинуть бы ... |
Цитата:
|
dakociha,
<script> function deepEqual(a, b) { if (a === b) { return true; } if (a == null || typeof(a) !== 'object' || b == null && typeof(b) !== 'object') { return false; } var equal = true; for (var key in a) { if (typeof(a) === 'object' && typeof(b) === 'object') { if (!deepEqual(a[key], b[key])) { equal = false; } } else if (a !== b) { equal = false; } } return equal; } var obj = { here: { is: "an" }, object: 2 }; alert(deepEqual(obj, { here: { is: "an" }, object: 2, test : 5 })); </script> |
dakociha,
может чем поможет http://javascript.ru/forum/showthrea...057#post474909 |
Часовой пояс GMT +3, время: 02:40. |