0

我正在构建一个基于表的数据可视化,其主键最多包含 4 个整数。例子:

5
015
1234

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

regions["15"];

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

你觉得我应该怎么处理?
如何在不设置障碍的同时防止错误?

4

2 回答 2

0

你有两个问题:第一,由于十进制转换导致前导零丢失,第二,前导零向javascript表明你正在处理一个不小心转换的八进制数(例如parseInt没有基数)。

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

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

另一种选择是在您的访问功能中专门键入检查,但如果您通过[]此方法提供本机密钥访问,则不是一种选择(直到未来的 javascript 版本提供Object.observe支持)。

于 2012-11-23T15:56:04.317 回答
0

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

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

另一方面,如果您尝试访问数据作为array然后前导零将被剥离。不注意的编码人员很容易犯错误并以错误的方式访问数据。不幸的是,错误可能在任何一个方向上发生。这两种选择都不是灵丹妙药。

上次我遇到这种情况时,我决定在所有键前面加上一个常量字符,以提醒其他编码人员这些是string键,而不是numeric键,如下所示:

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

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

于 2012-11-23T15:58:34.590 回答