Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.05.2018, 17:09
Интересующийся
Отправить личное сообщение для dakociha Посмотреть профиль Найти все сообщения от dakociha
 
Регистрация: 26.04.2018
Сообщений: 26

Сравнение объектов
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, 02.05.2018 в 17:13.
Ответить с цитированием
  #2 (permalink)  
Старый 02.05.2018, 17:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

dakociha,
строку 2 выкинуть бы ...
Ответить с цитированием
  #3 (permalink)  
Старый 02.05.2018, 17:19
Интересующийся
Отправить личное сообщение для dakociha Посмотреть профиль Найти все сообщения от dakociha
 
Регистрация: 26.04.2018
Сообщений: 26

Сообщение от рони Посмотреть сообщение
dakociha,
строку 2 выкинуть бы ...
крч нашел ошибку. строка 5 там не &&, а || должно быть
Ответить с цитированием
  #4 (permalink)  
Старый 02.05.2018, 17:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>
Ответить с цитированием
  #5 (permalink)  
Старый 02.05.2018, 18:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

dakociha,
может чем поможет http://javascript.ru/forum/showthrea...057#post474909
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнение свойств объектов piaNINA Events/DOM/Window 4 20.09.2016 16:29
Сравнение объектов Cepin Общие вопросы Javascript 24 21.03.2016 12:09
Как найти точки соприкосновения двух объектов в RaphaelJS Fatalityap Библиотеки/Тулкиты/Фреймворки 3 03.08.2012 16:33
Массив объектов или объект объектов vladlen Общие вопросы Javascript 19 30.10.2010 03:10
Быстрый поиск объектов Shasoft Общие вопросы Javascript 7 30.07.2009 05:28