-1

我正在使用两个文本区域。项目是关于在线打字测试。我使用了两个文本区域。第一个 textarea 包含要在第二个 textarea 中键入的内容。为了计算净打字速度,我需要一个 javascript diff 算法。

Javascript Diff Algorithm算法符合我的所有要求..它使用这个

jsdiff.js

用于区分两个字符串的 javascript 文件。和

JS 差异演示

是一个使用相同 javascript 文件的演示......你应该看看这个演示。但是我怎么知道输入的正确单词数?问题是提供的 javascript 文件没有使用任何注释,也没有提供任何文档。

4

2 回答 2

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);
于 2013-08-28T06:26:19.463 回答
0

您可以结合使用lenvenshtein 算法来查找准确性,并使用一些基本的字符串操作来计算不同的单词。这可以改进,但你明白了:

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
//  }
于 2013-08-28T06:19:00.200 回答