Сравнение объектов с помощью метода 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. Вспомнил, что забыл проверять вложенные объекты.