2015-04-29 4 views
2

Для моего текущего проекта мне нужно найти способ «нечеткого» - отпечаток пальца на стороне клиента javascript.Как «нечеткий» отпечаток пальца массив

Проблема в том, что элементы внутри массива могут меняться со временем. Под изменением я подразумеваю, что порядок стабилен, но некоторые элементы могут быть удалены, а другие - включены. Теперь мне нужно найти способ, который дает точно такой же отпечаток пальца (в пределах заданного порога).

Я сейчас думаю о какой-то частичной реализации матча, но мне любопытно, как другие это сделают.

+3

, так как это концептуальный вопрос представляется более целесообразным для https://programmers.stackexchange.com/ –

+0

Можете ли вы, возможно, дать пример того, что ваш внешний вид массива как в определенных точках, и какие отпечатки пальцев вы хотите создать на этих этапах? – basilikum

ответ

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 
} 
1

Это зависит от того, что такое определение «нечеткое».

Предложение Filype даст вам очень специфический отпечаток. Ничего нечеткого в этом.

Одним из решений будет рассмотрение разности levenstein между представлениями JSON тестового примера и набором контрольных данных (разделите счет на длину эталонного набора, чтобы получить пропорцию). Быстрый поиск Google this implementation.

В качестве альтернативы вы можете просто сделать подсчет elements which are different

 Смежные вопросы

  • Нет связанных вопросов^_^