相关疑难解决方法(0)

根据Javascript中的字符串输入生成唯一编号

在过去,我创建了一个从字符串生成唯一ID(数字)的函数.今天我发现它不是那么独特.从来没有看到过问题.今天,两个不同的输入生成相同的id(数字).

我在Delphi,C++,PHP和Javascript中使用相同的技术来生成相同的id,因此当项目涉及不同的语言时没有区别.例如,对于HTML id,tempfiles等,这可以很方便地进行通信.

通常,我所做的是计算字符串的CRC16,添加总和并返回它.

例如,这两个字符串生成相同的id(数字):

o.uniqueId( 'M:/Mijn Muziek/Various Artists/Revs & ElBee - Tell It To My Heart.mp3' );
o.uniqueId( 'M:/Mijn Muziek/Various Artists/Dwight Yoakam - The Back Of Your Hand.Mp3');
Run Code Online (Sandbox Code Playgroud)

它们都生成了224904的id.

以下示例是一个javascript示例.我的问题是,我怎样才能避免(稍微改变)它产生重复?(如果您可能想知道'o.'的含义,它是这些函数所属的对象):

o.getCrc16 = function(s, bSumPos) {
  if(typeof s !== 'string' || s.length === 0) {
    return 0;
  }
  var crc = 0xFFFF,
    L = s.length,
    sum = 0,
    x = 0,
    j = 0;
  for(var i = 0; i < L; i++) {
    j = s.charCodeAt(i);
    sum += ((i + …
Run Code Online (Sandbox Code Playgroud)

javascript string numbers unique

5
推荐指数
1
解决办法
5815
查看次数

javascript(类java)哈希码实现

以下代码是我对相当通用的 javascript 哈希代码实现的尝试。我计划将此代码与哈希表实现(例如 jshashtable)结合使用,该哈希表实现使用 hashCode() (如果它是为键定义的)。我尝试严格遵守 java 的数字、字符串和数组的哈希码实现。

问题:

  • 此实现在正确性或性能方面是否存在任何问题?
  • 是否有任何预先存在的哈希码实现可以执行相同(或大致相同)的操作?
  • 除了 jshashtable 之外,是否还有其他哈希表实现以我还应该考虑的相同方式利用 hashCode() 和 equals() ?

注意:我知道下面的代码可以利用其他库,例如下划线和 jquery,但我不希望在我的实现中使用任何第三方依赖。这并不是说我对哈希代码库不感兴趣,它们本身可能依赖于 jquery、下划线等。

/**
* Computes a hash code for an object based on a given subset of its fields 
* @param obj any type
* @param keys an array of strings representing some subset of the keys in obj or undefined
* @returns {Number} a java-like hash code for obj based on the hash codes of a subset of its fields …
Run Code Online (Sandbox Code Playgroud)

javascript hash hashtable hashcode

5
推荐指数
0
解决办法
966
查看次数

字符串到Javascript/Jquery中的唯一哈希

Javascript/Jquery中是否有一个函数可以从字符串中生成hashtag?我正在寻找几分钟的答案,我找不到它:/也许有其他方法可以做到这一点?我有Symfony 2.4应用程序.

我将表单数据序列化为字符串,例如:

"cloud_adm_dictionary_type%5Bitems%5D%5B0%5D%5BdictName%5D=Otwartabbb&cloud_adm_dictionary_type%5Bitems%5D%5B0%5D%5BdictValue1%5D=fa-comments-o+text-muted&cloud_adm_dictionary_type%5Bitems%5D%5B0%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B1%5D%5BdictName%5D=Wycena&cloud_adm_dictionary_type%5Bitems%5D%5B1%5D%5BdictValue1%5D=fa-comments-o+text-muted&cloud_adm_dictionary_type%5Bitems%5D%5B1%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B2%5D%5BdictName%5D=Negocjacje&cloud_adm_dictionary_type%5Bitems%5D%5B2%5D%5BdictValue1%5D=fa-comments-o+text-muted&cloud_adm_dictionary_type%5Bitems%5D%5B2%5D%5BisDefault%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B2%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B3%5D%5BdictName%5D=Wygrana&cloud_adm_dictionary_type%5Bitems%5D%5B3%5D%5BdictValue1%5D=fa-thumbs-o-up+text-primary&cloud_adm_dictionary_type%5Bitems%5D%5B3%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B4%5D%5BdictName%5D=Przegrana&cloud_adm_dictionary_type%5Bitems%5D%5B4%5D%5BdictValue1%5D=fa-thumbs-o-down+text-danger&cloud_adm_dictionary_type%5Bitems%5D%5B4%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5B_token%5D=3PBJr_pPjHhAIB95N7PUReP5asrXsGwCILAxZLyGTUg deal:738
cloud_adm_dictionary_type%5Bitems%5D%5B0%5D%5BdictName%5D=w%C5%82asnee&cloud_adm_dictionary_type%5Bitems%5D%5B0%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B1%5D%5BdictName%5D=proklienckii&cloud_adm_dictionary_type%5Bitems%5D%5B1%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B2%5D%5BdictName%5D=telemarketing&cloud_adm_dictionary_type%5Bitems%5D%5B2%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B3%5D%5BdictName%5D=mailing&cloud_adm_dictionary_type%5Bitems%5D%5B3%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B4%5D%5BdictName%5D=www&cloud_adm_dictionary_type%5Bitems%5D%5B4%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B5%5D%5BdictName%5D=partner&cloud_adm_dictionary_type%5Bitems%5D%5B5%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B6%5D%5BdictName%5D=nowe+zrodlo&cloud_adm_dictionary_type%5Bitems%5D%5B6%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5Bitems%5D%5B7%5D%5BdictName%5D=Aaa&cloud_adm_dictionary_type%5Bitems%5D%5B7%5D%5BdictActive%5D=1&cloud_adm_dictionary_type%5B_token%5D=3PBJr_pPjHhAIB95N7PUReP5asrXsGwCILAxZLyGTUg"
Run Code Online (Sandbox Code Playgroud)

我想从那里做标签,比如我不知道'462423dfdaak542634'.我稍后需要比较主题标签以查看表单是否已更改.

javascript jquery

4
推荐指数
1
解决办法
1万
查看次数

从 JSON 数据创建模拟 JavaScript 响应

我有一个应用程序可以进行很多异步操作fetch调用,其中一些是相同的。

\n\n

我有一个超集函数fetch(例如fetchPlus),通过根据参数为每个请求创建一个伪唯一标识符。这样,我就可以存储结果sessionStorage并访问它。

\n\n
function fetchCacheStore(hash) {\n    const storeItem = \'fetch_\' + hash;\n    return {\n        getCache: function () {\n            return JSON.parse(sessionStorage.getItem(storeItem));\n        },\n\n        setCache: function (data) {\n            sessionStorage.setItem(storeItem, JSON.stringify(data));\n            setTimeout(function () { sessionStorage.removeItem(storeItem); }, 25); // Clear the cache item shortly after\n        },\n    };\n}\n\nfunction fetchPlus() {\n    const stringHasher = function (s) { // Adapted from /sf/ask/533152301/#comment94234739_7616484\n        for (var i = h = 0; i < s.length; i++) {\n            h = Math.imul(31, h) + …
Run Code Online (Sandbox Code Playgroud)

javascript json fetch

2
推荐指数
1
解决办法
4990
查看次数

如何在 JavaScript 中对字符串进行哈希处理?

我想对字符串进行哈希处理,但我不想实现哈希算法。是否有内置的 JavaScript 函数或可靠的 npm 包来哈希字符串?如果是这样,我如何使用它来哈希字符串?

例如,如果我有

const string = "password";
Run Code Online (Sandbox Code Playgroud)

我想通过某种现成的函数或方法来运行它,就像这样

const hash = hashFunction( string );
Run Code Online (Sandbox Code Playgroud)

然后从中获取哈希值,如下所示

console.log( hash ); //5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
Run Code Online (Sandbox Code Playgroud)

注意:我知道这个问题与这个问题类似,但是那里选择的答案实现了哈希。我专门寻找现成的可靠函数或散列方法。

javascript hash node.js

2
推荐指数
1
解决办法
6261
查看次数

包含对象的 2 个数组的交集

我使用下面的代码来交叉两个非常大的数组。由于目前需要很长时间,是否有可能提高其性能。

const arr1 = [  
    {  
       "number":"123",
       "firstName":"John",
       "lastName":"Smith",
       "email":"test1@test.com",
    },
    {  
       "number":"1234",
       "firstName":"Chad",
       "lastName":"Baker",
       "email":"test2@test.com",
    }
];
 
const arr2 = [  
    {  
        "number":"12345",
        "firstName":"Chad",
        "lastName":"Baker",
        "email":"test2@test.com",
    },
    {  
        "number":"123456",
        "firstName":"John",
        "lastName":"Smith",
        "email":"test1@test.com",
    }
]

 let arr3 = arr1.filter(a => arr2.some(b => { return a.firstName == b.firstName && a.lastName == b.lastName}));  
 
 console.log(arr3);
Run Code Online (Sandbox Code Playgroud)

javascript arrays

0
推荐指数
1
解决办法
74
查看次数

标签 统计

javascript ×6

hash ×2

arrays ×1

fetch ×1

hashcode ×1

hashtable ×1

jquery ×1

json ×1

node.js ×1

numbers ×1

string ×1

unique ×1