在JavaScript中使用前导零处理主键?

时间:2012-11-23 15:49:37

标签: javascript primary-key javascript-objects

我正在构建基于表的数据可视化,其中主键由最多4个整数组成。例子:

5
015
1234

在整个应用程序中,我需要为这些实体使用关键约定,我正在考虑我的选择。我关心的是,如果开发人员没有足够重视Type并且在执行查找等时会出现错误,那么前导零/ es将被剥夺:

regions["15"];

regions : {
  "015" : {name: "ABC", ...}
}

您认为我应该如何处理? 如何在不施加障碍的同时防止错误?

2 个答案:

答案 0 :(得分:0)

你有两个问题:一个是由于十进制转换导致的前导零丢失,另一个是前导零向javascript表明你正在处理一个带有粗心转换的八进制数的事实(例如parseInt没有基地)。

避免任何问题的最简单方法是在键上提供另一个前缀字符,实际上是下划线,字母或任何其他字符。在您的API中,您可以删除您选择的内容,同时需要高级访问者的前缀字符。

通过要求开发人员输入前缀字符,确保始终获得字符串,并且他们将4个字符的数字字符串构建为字符串。

另一种选择是明确键入您的访问功能,但如果您通过[]提供本机密钥访问,则这不是一个选项(直到javascript的未来版本提供Object.observe支持)。< / p>

答案 1 :(得分:0)

这是一个艰难的决定,两个方向都有利弊。

如果您将数据存储为object,则前导零没有问题代码问题。

另一方面,如果您尝试以array的形式访问数据,则会删除前导零。不注意的程序员很容易犯错误并以错误的方式访问数据。不幸的是,错误可以在任何一个方向上进行。两种选择都不是银弹。

上次我遇到这种情况时,我决定用一个常量字符作为所有键的前缀,以提醒其他编码员这些是string键,而不是numeric键,类似于这样:

regions : {
  "R015" : {name: "ABC", ...}
}

你甚至可以设置一个模块并定义你自己的getter和setter来根据需要添加/删除常量。