javascript - 为什么这些对象不相等?

标签 javascript json compare

我正在尝试使用 Mocha 和 Chai 在 JavaScript 中编写测试。在测试结束时,我想比较 2 个 JavaScript 对象,它们应该相等。

我从测试中得到的输出如下:

{ publication: 
   { publication_id: 'pubFetch1',
     title: 'Publication Fetcher',
     person_id: 'uploader',
     URL: 'http://www.pubfetchertest.com',
     publication_year: '2015',
     upload_date: '2015-05-05 00:00:00',
     page_count: '5',
     type: 'paper',
     rating: '0',
     votes: '0',
     abstract: 'Testing the Publication Fetcher',
     location: 'location' },
  comments: 
     [ { commentID: 'comment1',
         personID: 'uploader',
         firstName: 'First',
         lastName: 'Last',
         text: 'Comment Content',
         time: '2015-05-05 10:24:36',
         reactions: [],
         myComment: true },
       { commentID: 'comment2',
         personID: 'author1',
         firstName: 'First',
         lastName: 'Last',
         text: 'Comment Content',
         time: '2015-05-05 11:01:45',
         reactions: [Object],
         myComment: false } ],
   keywords: [ 'keyword1', 'keyword2', 'keyword3' ],
   uploader: { person_id: 'uploader', first_name: 'First', last_name: 'Last' },
   score: 5,
   authors: 
     [ { person_id: 'author1', first_name: 'First', last_name: 'Last' },
       { person_id: 'author2', first_name: 'First', last_name: 'Last' },
       { person_id: 'author3', first_name: 'First', last_name: 'Last' } ],
   editors: [],
   publishers: [] }

虽然我想将其与之比较的对象如下:

{ publication: 
      { publication_id: 'pubFetch1',
        title: 'Publication Fetcher',
        person_id: 'uploader',
        url: 'http://www.pubfetchertest.com',
        publication_year: '2015',
        upload_date: '2015-05-05 00:00:00',
        page_count: '5',
        type: 'paper',
        rating: '0',
        votes: '0',
        abstract: 'Testing the Publication Fetcher',
        location: 'location'},
   comments: 
      [{ commentID: 'comment1',
         personID: 'uploader',
         firstName: 'First',
         lastName: 'Last',
         text: 'Comment Content',
         time: '2015-05-05 10:24:36',               
         reactions: [],
         myComment: true},
       { commentID: 'comment2',
         personID: 'author1',
         firstName: 'First',
         lastName: 'Last',
         text: 'Comment Content',
         time: '2015-05-05 11:01:45',
         reactions: [{ commentID: 'comment3',
                       personID: 'author2',
                       firstName: 'First',
                       lastName: 'Last',
                       text: 'Comment Content',
                       time: '2015-05-05 11:02:10',
                       reactions: [],
                       replyID: 'comment2',
                       myComment: false}],
         myComment: false}],
    keywords: ['keyword1', 'keyword2', 'keyword3'],
    uploader: {person_id: 'uploader',
               first_name: 'First',
               last_name: 'Last'},
    score: 5,
    authors: [{person_id: 'author1',
               first_name: 'First',
               last_name: 'Last'},
              {person_id: 'author2',
               first_name: 'First',
               last_name: 'Last'},
              {person_id: 'author3',
               first_name: 'First',
               last_name: 'Last'}],
    editors: [],
    publishers: []
};

我没有发现这两个对象有任何区别,那么为什么 JavaScript 会说它们不同呢?我正在使用 JSON.stringify(obj1) === JSON.stringify(obj2) 来比较这两个对象。

JSFiddle:http://jsfiddle.net/9akeh8bh/4/

最佳答案

两个对象之间存在差异;有些键有下划线,有些是大写。

您是否尝试过标准化键名称并查看比较是否有效?

关于javascript - 为什么这些对象不相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30048737/

相关文章:

java - 比较可能以不同内部顺序出现的字符串

ios - 如何比较数组?还有改变属性?

javascript - 无法访问父元素

javascript - Electron cookies

javascript - 以 JSON 格式提交表单数据

java - 使用 jackson 的 ObjectMapper 的 JSON 对象的顺序

javascript - React 中的 Firebase 查询 - 我可以登录到控制台,但不能在组件中使用

javascript - 使用 javascript 从复选框获取值

c# - 如何在c sharp中循环json对象内部的json对象

c# - 按字典顺序比较两个 char 数组