我正在使用两个文本区域。项目是关于在线打字测试。我用了两个文字区域。第一个textarea包含要在第二个textarea中键入的内容。为了计算网络打字速度,我需要一个javascript diff算法。
Javascript Diff Algorithm algo符合我的所有要求......使用此
用于区分两个字符串的javascript文件。和
是一个使用相同javascript文件的演示......你应该看看这个演示。但是我怎么知道输入正确的单词呢?麻烦的是,提供的javascript文件没有使用任何注释,也没有提供任何文档。
答案 0 :(得分:1)
我不确定你是否需要比我上面的评论更多的解释。我喜欢你的链接显示的差异突出显示,但如果你只是在计算差异,为什么这样的事情不起作用? http://jsfiddle.net/vSySu/
var arr1 = $('#text1').val().split(' ');
var arr2 = $('#text2').val().split(' '); // split on whatever string or regex you want.
var diffs = 0;
for (var i = 0; i < arr1.length; i++) {
if (arr1[i] !== arr2[i]) {
diffs++;
}
}
alert(diffs);
答案 1 :(得分:0)
您可以使用lenvenshtein algorithm的组合来查找准确性,并使用一些基本的字符串操作来计算不同的单词。这可以改进,但你明白了:
function wordAccuracy(str1, str2) {
var len = str1.length,
distance = levenshtein(str1, str2),
words1 = str1.split(' '),
words2 = str2.split(' ');
return {
accuracy: 100 - (0|(distance * 100) / len) +'%',
fail: words1.filter(function(word, idx){
return word != words2[idx];
}).length
}
}
// Example:
var str1 = 'Lorem ipsum dolor sit amet consectetur adipiscing elit';
var str2 = 'Lorme ipsmu dolor sit maet cnsectetur adipiscing elot';
console.log(wordAccuracy(str1, str2));
//^ {
// accuracy: '86%'
// fail: 5
// }