gpt4 book ai didi

javascript - 如何计算字符串集合的哈希码(0..5000 个元素)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:01:14 24 4
gpt4 key购买 nike

我有一个允许选择地理区域的网页。我预计选择的区域不会超过 5000 个。

每个区域都有一个代码(9 个字符长)。

我想从数据库中加载一组区域并让用户对其进行编辑。

如果用户进行了任何更改,我想在某处显示“未保存的更改”消息。为此,我想比较集合的原始版本和当前版本。

是否可以计算此集合的哈希码并仅比较哈希码?元素的顺序并不重要,应忽略。

集合目前是这样实现的

function AreaHashTable(areaIdentifiers) {

//properties
this.hash = {};

this.addKeys(areaIdentifiers); }

AreaHashTable.prototype.getKeys = function () {
return this.hash; };

AreaHashTable.prototype.hasKey = function (key) {
if (this.getKeys().hasOwnProperty(key)) {
return true;
}
return false; };

AreaHashTable.prototype.addKey = function (gssCode) {
this.hash[gssCode] = gssCode;
};

AreaHashTable.prototype.addKeys = function (areaIdentifiers) {
var i;
for (i = 0; i < areaIdentifiers.length; i++) {
this.addKey(areaIdentifiers[i]);
} };


... etc

}

最佳答案

您可以遍历您的字符串集合,通过对每个字符串的字符与相应的哈希字符串字符进行异或运算,生成一个 9 字符的哈希。这样,您会收到字符串集合的独立于顺序的哈希值。

类似于:

var hash = [0,0,0,0,0,0,0,0,0];

for (var strg in strings) {
for(var i=0; i<9; i++) {
hash[i] ^= strg.charAt(i);
}
}

然而,也许封装数据并维护一个“已更改”标志,将是解决潜在问题的另一种解决方案。

关于javascript - 如何计算字符串集合的哈希码(0..5000 个元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20149805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com