Сравнить 2 объекта в javascript

#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
}