Сравнение объектов с одинаковым набором ключей и примитивами в качестве значений

Мне необходимо сравнить два объекта, они прилетают с бэка.

Я делаю JSON.stringify(), и потом сравниваю с помощью ===. Проблема в том что могут быть два объекта: {age:16, name:1}, {name:1, age:16} - получается что они не будут равны при сравнении, но по факту равны.

Как это решить?


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

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

такой вариант сработает если у вас одинаковое количество ключей

const arg = {age:16, name:1}
const arg2 = {name:1, age:16}
const isEquals = Object.keys(arg).reduce((acc, rec) => {
    return acc && arg[rec] === arg2[rec]
}, true)

console.log(isEquals)

данный вариант включает проверку на количество ключей

const isEquals = (obj1, obj2) => {
    if(Object.keys(obj1).length === Object.keys(obj2).length) {
        return Object.keys(obj1).reduce((acc, rec) => {
            return acc && obj1[rec] === obj2[rec]
        }, true)
    }
    return false
}

console.log(isEquals({age:16, name:1}, {age:16, name:1, test:1}))
→ Ссылка