如何编辑这个JS代码,以便在散列文本中添加字符,而不仅仅是数字
How to edit this JS code so to add chars in the hashed text instead of only numbers
我使用此代码来避免md5,因为它是一个大函数
String.prototype.hashCode = function() {
var hash = 0, i, chr, len;
if (this.length == 0) return hash;
for (i = 0, len = this.length; i < len; i++) {
chr = this.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
};
如图所示http://jsfiddle.net/h0ef92Lu/
并且它创建xxxxxxxxxx(10)个数字的散列。我的问题是,从统计数据来看,如果我有9999999999行,下一行将重复,我不希望重复。所以,我想在数字中添加字符。
我的问题是如何做到这一点,它适用吗?
在我的脑海中,你可以使用这样的
return hash + parseInt(time.getTime()).toString(36).toUpperCase();
它将使您的ID在
我的问题是,从统计数据来看,如果我有9999999999行,下一行将重复,我不希望重复。
只需两行就可以获得重复项。例如,使用您的散列函数,以下两次都将输出2095
:
alert("AP".hashCode());
alert("B1".hashCode());
哈希从本质上来说会丢弃输入中的数据,因此除非您确切地知道哪些数据是多余的,否则您无法避免重复。这被称为完美哈希,但除非你事先知道所有可能需要哈希的输入,否则你无法进行完美哈希。
否则,你可以让你的哈希代码变得更长或更复杂,以减少重复,但这并不能保证避免重复,除非哈希至少和任何可能输入的信息内容一样长,然后对它进行哈希根本没有意义。
在我看来,散列不是解决问题的正确方法。
相关文章:
- Javascript,将文本添加到具有现有文本节点的元素中
- 选中单选框时,将文本添加到文本框中
- 为未标记的文本添加CSS样式
- 如何将表格中的文本添加到使用按钮输入的文本区域
- 有没有办法将mouseOver上的个人文本添加到完整日历中
- 改变“;onClick"这个jQuery的操作从清除输入文本改为将输入文本添加到下面的列表中
- 如何使用JavaScript将链接文本添加到电子邮件中
- 将动态验证文本添加到自定义jQuery验证规则中
- 将文本添加到每个数组元素的开头
- 单击将按钮中的文本添加到带有jQuery或JS的输入框中
- 通过按钮将不同的文本添加到文本区域-不起作用
- 如何为Fabric.js中的文本添加CSS属性
- 如何将预加载程序文本添加到jQuery Cycle 2中
- Javascript Regex exec 在向搜索文本添加属性/引号后冻结
- 如何在所有浏览器中向文本区域中的选定文本添加 标记
- jQuery将文本添加到放置在表格单元格中的图像中
- D3 垂直条形图为标签文本添加换行符
- 单击时从列表中将文本添加到文本框的方法
- 将文本添加到 D3 圆环图的中心
- 如何将非可变文本添加到javascript打印弹出窗口中