2014-06-30 31 views
1

我有一个文件,其唯一目的是在对象中提供大量的键/值对。它看起来是这样的:在JavaScript对象中查找重复的键

var myobj = { 
    some_key: 'some value', 
    another_key: 'another value', 
    // thousands of other key/value pairs... 
    some_key: 'accidental duplicate key with different value' 
}; 

现在,当我引用文件,并引用some_key我得到了意外的重复的值,因为JavaScript将存储的最后声明的关键。

我想编写一个单元测试,检查这个对象的意外重复键。问题是JavaScript已经删除了重复项。我如何通过单元测试来完成这个检查?

(答案之一是使用字符串分析,找到重复的。这是脆手动解析文件和我想呆在远离这一切。)

+1

而改变文件的来源是不可能的? –

+2

“严格使用” - 如果您有重复密钥(我认为,没有测试过)会产生错误 – soktinpk

+2

问题在于谁在创建该文件,您应该修复该问题,而不是稍后修补它 –

回答

6

添加"use strict";到文件的顶部。用法示例:

(function() { 
    "use strict"; 
    // Throws a syntax error 
    var a = { 
    b: 5, 
    b: 6 
    }; 
})(); 

编辑:由于ES6的计算属性值,此答案不再严格保持最新。如果你愿意,你可以把你的对象写成JSON对象(如果可能的话),并通过http://www.jslint.com/,这将检查重复的键。另见:"use strict"; now allows duplicated properties?

+0

这不会在Node.js中引发错误0.10.42 。在什么样的JavaScript环境中被确认扔掉? –

+1

@MarkStosberg由于ES6支持计算属性值,所以不幸的是,这个答案不再是最新的(http://stackoverflow.com/questions/29936845/use-strict-now-allows-duplicated-properties) – soktinpk