Как сравнивать объекты с помощью loda sh независимо от их порядка - PullRequest
1 голос
/ 16 июня 2020

Я пытаюсь сравнить два объекта, используя loda sh, как показано ниже. Проблема в том, что он всегда возвращает false. Я думаю, что проблема в том, что у объектов разный порядок ключей и значений. Однако я не смог найти решение, как сравнить его независимо от порядка.

Как игнорировать порядок и правильно сравнивать два объекта?

var obj1 = {                                                                                                                     
  event: 'pageInformation',                                                                                           
  page: { type: 'event', category: 'sportsbook' },                                                                     
  username: 'anonymous',                                                                                              
  pagePath: '/',                
  item: { name: 'Barcelona - Leganes', id: '123' },                                                           
  contest: { name: '1.Španielsko', id: 'MSK70' },                                                                     
  category: { name: 'Futbal', id: 'MSK3' },                                                                           
  teams: [                                                                                                            
    { id: 'barcelona', name: 'Barcelona' },                                                                           
    { id: 'leganes', name: 'Leganes' }                                                                                
  ]                                                                                                                   
}                                                                                                                     
var obj2 = {                                                                                                                     
  event: 'pageInformation',                                                                                           
  page: { type: 'event', category: 'sportsbook' },                                                                    
  username: 'anonymous',                                                                                              
  pagePath: '/',                
  category: { id: 'MSK3', name: 'Futbal' },                                                                           
  contest: { name: '1.Španielsko', id: 'MSK70' },                                                                     
  item: { id: '123', name: 'Barcelona - Leganes' },                                                           
  teams: [                                                                                                            
    { name: 'Barcelona', id: 'barcelona' },                                                                           
    { name: 'Leganes', id: 'leganes' }                                                                                
  ]                                                                                                                   
}         

function compareObjects(obj1, obj2){
 return _.isMatch(obj1, obj2);
}   

1 Ответ

3 голосов
/ 16 июня 2020

Вы можете использовать функцию isEqual, которая выполняет глубокую проверку равенства (независимо от порядка клавиш):

   _.isEqual(obj1, obj2)

Подробнее см. Здесь: https://lodash.com/docs/2.4.2#isEqual

...