10

2文字列の間の%一致を計算する方法はありますか?2文字列間の%一致を計算する方法はありますか

私は85%

一致があるならば、私は2つのテーブルを結合します2弦の間の一致を計算するために必要な状況を持って、私は2つのテーブル

私のサンプルを組み合わせるためのコードを書かれています文字列は次のとおりです。

var str1 = 'i love javascript'; 
var str2 = 'i love javascripttt'; 

var matchPer = match(str1,str2); // result might be 80% , 85%, 90% ,95% etc 
+3

割合を計算するためのあなたのロジックは何ですか? –

+5

ただの方法ではなく、たくさんの方法があります。あなたは1つを選択するためのガイドラインがありますか? 「85%一致する」とは実際にあなたにとって何を意味しますか? – hobbs

+8

'' 1 - levenshtein(str1、str2)/ max(str1.length、str2.length) 'は私にとって妥当なメトリックのようですが、Damerau-Levenshtein(" Bacon "と" Baocn " (「バナナ」と「アナナ」のLevenshtein距離は1であるが、ハミング距離は6である)。彼らは14%であるが、類似または86%類似) – hobbs

答えて

10

このようなものはありますか?

var str1 = 'i love javascript'; 
 
var str2 = 'i love javascripttt'; 
 

 
function match(str1, str2){ 
 
    var tmpValue = 0; 
 
    var minLength = str1.length; 
 
\t if(str1.length > str2.length){ 
 
\t \t var minLength = str2.length; 
 
\t } \t 
 
    var maxLength = str1.length; 
 
\t if(str1.length < str2.length){ 
 
\t \t var maxLength = str2.length; 
 
\t } 
 
    for(var i = 0; i < minLength; i++) { 
 
     if(str1[i] == str2[i]) { 
 
      tmpValue++; 
 
     } 
 
    } 
 
    var weight = tmpValue/maxLength; 
 
    return (weight * 100) + "%"; 
 
} 
 

 
var matchPer = match(str1,str2); 
 
console.log(matchPer); //outputs: 89.47% 
 
console.log(match("aaaaa", "aaaaa")); //outputs: 100% 
 
console.log(match("aaaaa", "aXaaa")); //outputs: 80% 
 
console.log(match("aaaaa", "aXXaa")); //outputs: 60% 
 
console.log(match("aaaaa", "aXXXa")); //outputs: 40% 
 
console.log(match("aaaaa", "aXXXX")); //outputs: 20%

+13

これはexoplainです。ジューサーダンプコードを使用しないでください。 –

+3

これはhttps://en.wikipedia.org/wiki/Simple_matching_coefficientです – JollyJoker

関連する問題