There was some kind of error in Chrome that was introduced when we upgraded the Chrome version from 54.0.2840.99 to 55.0.2883.75 on December 2, 2016.
The solution to our specific problem was to modify our hash function to return only positive numbers. Although small tests using negative numbers seem to work fine (according to the strabismus example in the comments), in our application they no longer work in Chrome.
I donβt have much time to delve into it. I do not know if this is due to the number of elements (we only have about 170 items in our "bucket").
Update:
gre_gor, a sample was created in the above comment showing an error:
obj = { buckets: {}, comparer: { getObjectHashCode: function(str) { // hardcoded magic hashing return { "SUPPLYINVENTORY/SUPTRANSENTRY": -1525029354, "PROPANE/LOADPROPANETOGROWERAR": 115289505 }[str.toUpperCase()]; }, areEqual: function(a, b) { return a.toUpperCase() == b.toUpperCase(); } }, containsKey: function(key) { var hash = this.comparer.getObjectHashCode(key); if (!this.buckets.hasOwnProperty(hash)) return false; var array = this.buckets[hash]; for (var i = 0; i < array.length; i++) { if (this.comparer.areEqual(array[i].key, key)) return true; } return false; } }; obj.buckets[-1525029354] = [{ key: "SUPPLYINVENTORY/SUPTRANSENTRY", value: "$SupTransEntry object" }]; obj.buckets[115289505] = [{ key: "PROPANE/LOADPROPANETOGROWERAR", value: "$LoadPropaneToGrowerAR object" }]; console.log(obj.containsKey("SUPPLYINVENTORY/SUPTRANSENTRY"), obj.containsKey("PROPANE/LOADPROPANETOGROWERAR"));
The text "true true" should go to the console, but in Chrome 55 it generates "false true".
Thanks to gre_gor for a test that reliably reproduces the problem. I reported a Google bug.
Update # 2: An error was sent 3 days before my submission. The problem has been fixed and will be released soon, and I wonβt have to bypass it. - Chromium Bug # 673008
source share