【发布时间】:2017-07-01 23:28:17
【问题描述】:
假设我有一个数组中不同 URL 的集合:
var source = ['www.xyz.com/Product/1', 'www.xyz.com/Product/3', 'www.xyz.com/Category/1', 'somestring']
什么是迭代数组并将相似字符串分组到单独数组中的好方法? 上述示例的所需输出将是:
var output = [
['www.xyz.com/Product/1', 'www.xyz.com/Product/3'],
['www.xyz.com/Category/1'],
['somestring']
];
条件
-
source中的所有项目都可以是随机字符串 - 逻辑必须能够在有意义的时间内比较和分组大约 100,000 个项目
我找到了string-similarity library,它可以将一个字符串与一组字符串进行比较。一种方法是遍历源,将每个项目与源集合进行比较,并应用规则对具有相似分数的项目进行分组。但是我想这将是非常低效的。
有人可以建议我一种有效的方法来完成我的需要吗?
【问题讨论】:
-
所以在这个例子中有一个清晰的模式,但看起来你问的字符串可能是什么?对吗?
-
@aw04 是的,没有明确的模式,字符串可以是任何东西。正如我所写:源中的所有项目都可以是随机字符串
-
祝你好运:)
-
只是一个注释,类似的分数想法太简单了,你只看到一个字符串如何与另一个字符串相关,而不是它们如何相互关联。我唯一能想到的就是第一次通过某种方式找出不同的数组组,但这听起来像是一个非常复杂的算法
-
你是完全正确的,但我认为必须已经存在一种算法来完成这种比较(mb 未在 Node.js 中实现),我只是不知道。所以我希望有人把我推向正确的方向:)
标签: arrays node.js string comparison