#javascript #json #node.js
#javascript #json #node.js
Вопрос:
У меня есть 2 объекта, скажем:
a:
{
"sale_price": 100,
"has_pool": yes,
"rooms": 3
}
b:
{
"sale_price": 100,
"has_pool": no,
"rooms": 3
}
и я хотел бы сравнить оба и вернуть количество полей, которые соответствуют друг другу (в этом случае это вернет 2, потому что совпадают только 2 поля).
Есть идеи, как это сделать?
Заранее спасибо!
Комментарии:
1. У меня есть несколько идей. Опробовали ли вы какие-нибудь свои собственные идеи? Возможно, с помощью
Object.keys
?2. Это «has_pool», означающее значение true / false.. И мы предполагаем, что сравнение будет поверхностным?
3. Хорошо, предположим, что это поверхностный тест. И, опасаясь такой полиции, я публикую здесь решение. Я не буду считать это правильным решением, так как за него просто проголосуют. Объект.клавиши(a).уменьшить(функция (acc, клавиша) { вернуть acc (a[клавиша] === b[клавиша]); }, 0)
Ответ №1:
Это довольно наивный подход, он будет работать до тех пор, пока сравниваемые объекты не содержат объектов:
function compare(a, b) {
return Object.keys(a).filter(k => a[k] === b[k]).length
}