10

2 문자열 사이의 % 일치를 계산하는 방법이 있습니까?거기에 2 문자열 간의 % 일치를 계산하는 방법입니다

나는

경기 후 내가 2 개 테이블을 결합합니다, 나는이 개 테이블

내 샘플을 결합하는 코드를 작성했습니다 85 %가있는 경우 두 문자열 사이에 일치를 계산하기 위해 요구되는 상황이 문자열은 다음과 같습니다.

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

* * 길 밖에 없어 * 많은 길 *이 있습니다. 하나를 선택하기위한 지침이 있습니까? "85 % 일치"는 실제로 귀하에게 어떤 의미입니까? – hobbs

+8

'1 - levenshtein (str1, str2)/max (str1.length, str2.length)'는 나에게 합당한 척도로 보일지 모르지만, Damerau-Levenshtein ("베이컨"과 "baocn" Ala Eddine JEBALI의 대답과 같이 Hamming distance는 추가 및 삭제를 용인하지 않습니다 ("bananas"및 "ananas"는 Levenshtein 거리가 1이지만 Hamming 거리는 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