Сравнение объектов с помощью метода forEach

Даны два объекта:

const obj1 = {
  name: "ALex",
  age: 32,
};
const obj2 = {
  name: "Smith",
  age: 19,
};

Как их сравнить через forEach, чтобы функция вернула булевое значение (в этом случае false) ?


Ответы (1 шт):

Автор решения: entithat

const obj1 = {
  name: "Jack",
  age: {}
};
const obj2 = {
  name: "Smith",
  age: {}
};

function foo(obj1, obj2) {
  // Если кол-во ключей разное, значит уже не одинаковые 
  if (Object.keys(obj1).length !== Object.keys(obj2).length) return false;

  // Проверяем если это примитив, если да, то сравниваем значения
  if (obj1 !== Object(obj1) && obj2 !== Object(obj2)) return obj1 === obj2;

  // Если кол-во разное, сравниваем каждое значение отдельно
  // p.s. через for-of как-то проще
  let same = true;
  Object.keys(obj1).forEach(e => {
    if (!foo(obj1[e], obj2[e])) same = false;
  });

  return same;
}

console.log(foo(obj1, obj2));

P.S. Вспомнил, что забыл проверять вложенные объекты.

→ Ссылка