我应该如何为一堆对象生成唯一的 ID?
我有一个由大量 Symbol
对象组成的数组:
var symbols = {
alpha : new Symbol('alpha', 'symbol_0', 'α', 'GreekSymbol'),
beta : new Symbol('beta', 'symbol_1', 'β', 'GreekSymbol'),
gamma : new Symbol('gamma', 'symbol_2', 'γ', 'GreekSymbol'),
delta : new Symbol('delta', 'symbol_3', 'δ', 'GreekSymbol'),
... about 500 of these different types of symbols...
};
Symbol
对象的第二个参数是将在 HTML 中使用的 ID。由于 HTML 规范不允许重复的 ID,因此我想为每个 Symbol
分配一个唯一的 ID,并且仍然能够知道该 ID 对应于一个 Symbol
。因此,我喜欢使用 symbol_
前缀,但不喜欢通过 symbol_500
手动输入 symbol_0
的想法。
我应该如何生成唯一 ID?当我声明上述数组时,我可以自动化此过程并生成唯一的 ID 吗?
更新
在客户端进行此操作实际上是一个好主意吗?
I have an array consisting of A LOT of Symbol
objects:
var symbols = {
alpha : new Symbol('alpha', 'symbol_0', 'α', 'GreekSymbol'),
beta : new Symbol('beta', 'symbol_1', 'β', 'GreekSymbol'),
gamma : new Symbol('gamma', 'symbol_2', 'γ', 'GreekSymbol'),
delta : new Symbol('delta', 'symbol_3', 'δ', 'GreekSymbol'),
... about 500 of these different types of symbols...
};
The second parameter for the Symbol
object is an ID that will be used in HTML. Since the HTML specs don't allow duplicate IDs, I want to assign each Symbol
a unique ID and still be able to know that this ID corresponds to a Symbol
. So I like the idea of having the symbol_
prefix but I don't like the idea of manually typing out symbol_0
through symbol_500
.
How should I generate unique IDs? Can I automate this process and generate a unique ID when I'm declaring the above array?
UPDATE
Is it actually a good idea to do this client-side?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
创建一个递增计数器的函数:
现在每次调用 id 都会返回一个唯一值:
像这样使用它:
功能更齐全的版本将允许您指定前缀和可选的起始值:
输出:
Make a function that increments a counter:
Now each call to
id
will return a unique value:Use it like this:
A more fully-featured version would allow you to specify the prefix and an optional start value:
Output:
一个跟踪调用次数的简单对象应该可以工作。
A simple object that keeps track of the number of calls should work.
如果您只有 500 个左右可供选择,您可以将符号的内容与 JS MD5 实现一起哈希,甚至只使用 JS UUID 生成器,如下所示: com/archives/uuid-generator-in-javascript" rel="nofollow">http://ajaxian.com/archives/uuid-generator-in-javascript
如果此数据在会话之间持久存在并存储在服务器端,你最好在服务器上完成这部分。
If you only have 500 or so to choose from, you could just hash the contents of the symbol together with a JS MD5 implementation, or even just use a JS UUID generator like this one: http://ajaxian.com/archives/uuid-generator-in-javascript
If this data is persistent across sessions and stored serverside, you'd be better off doing this part on the server.