2

对于我当前的项目,我需要找到一种“模糊”的方法 - 指纹 javascript 数组客户端。

问题是数组中的元素会随着时间而改变。通过更改,我的意思是订单是稳定的,但某些元素可能会被删除,而其他元素可能会被包括在内。现在我需要找到一种产生完全相同指纹的方法(在给定的阈值内)。

我目前正在考虑一种部分匹配的实现,但我很好奇其他人会怎么做。

4

2 回答 2

1

您可以将数组包装到一个对象中,并向该对象添加一个修改计数器。在每次修改数组时,您必须增加修改计数器。通过定义数组修改的阈值,您可以做出决定。

var fuzzyArray = {
                   data : [],
                   modCount : 0,
                   changeElement : function (elementId, newData){
                                      data[elementid] = newData;
                                      modCount++;
                                   }
               };

 //adding some elements...

 fuzzyArray.changeElement(1,"foo");
 if (fuzzyArray.modCount > treshold){
     // do something
 }
于 2015-04-29T08:48:56.897 回答
1

这取决于您对“模糊”的定义是什么。

Filype 的建议会给你一个高度具体的指纹。没有什么模糊的。

一种解决方案是查看测试用例的 JSON 表示和参考数据集之间的 levenstein 差异(将分数除以参考集的长度以获得比例)。一个快速的谷歌发现了这个实现

或者,您可以简单地计算不同的元素

于 2015-04-29T20:54:51.493 回答