0

我正在创建带有自定义选项的打字导师。

不是专业人士(不要因为我错了人错了地方而生我的气),但感谢诸如 stackoverflow.com 之类的有用论坛和贡献流量/人,我能够在一两天内将其拉出来。

现在直接来这里!

    while (i < len+1){
      if(boxarray[i] == orgarray[i]){
    ++i;
        actualScore = i - 1;
      }

我已经搜索过了,'==' 运算符没有用,我不会去 JSON.encode。我在这个页面遇到了类似的解决方案。但就我而言,我必须在比较两个句子时遍历每个单词。细节是微不足道的,如果有人请帮我解决上面的问题,我不会再抱怨同一个项目,承诺。

好的,如果可以帮助您帮助我,我将添加更多代码。

    var paratext = document.getElementById('typethis').innerHTML;    
    var orgstr = "start typing, in : BtXr the yellow box but. please don't shit." ;
    var boxtext = document.getElementById('usit').value; 
    var endtrim = boxtext;
    var actualScore;
    var orgarray = listToArray(orgstr," ");
    var boxarray = listToArray(boxtext," ");
    var len = boxarray.length;
    var i = 0;
    var actualScore; //note var undefined that's one mistake I was making [edit]
    if(orgstr.indexOf(boxtext) !== -1){
    while (i < len+1){
      if(boxarray[i] == orgarray[i]){
    ++i;
        actualScore = i - 1;
       }
     }      
    alert(actualScore);
    }
4

6 回答 6

1

如果我遵循您所追求的,那么这样的事情如何:

http://jsfiddle.net/w6R9U/

var s1 = 'The dog sleeps';
var s2 = 'the dog jogs';

var s1Parts= s1.split(' ');
var s2Parts= s2.split(' ');

var score = 0;

for(var i = 0; i<s1Parts.length; i++)
{
     if(s1Parts[i] === s2Parts[i])
         score++;   
}

“The dog sleeps” 和 “the dog sleeps” 因大小写而得分为 2(如果需要,可以忽略)。上面的例子得分为 1。可以通过使用句子的长度来获得一个百分比。希望这可以帮助!如果没有其他东西可以让你开始。

于 2014-05-09T19:38:04.640 回答
1

下面将比较每个单独的字符,减少每个不等式的“actualScore”:

http://jsfiddle.net/ckKDR/

var sentence1 = "This is the original sentence.", // original text
    sentence2 = "This is teh originel sentence.", // what the user typed
    length = sentence1.length,
    actualScore = length, // start with full points
    i = 0;

while(i<length){
    if(sentence1[i]!==sentence2[i]){
        actualScore--; // subtract 1 from actual score
    }

    i++; // move to the next index
}

alert("'sentence2' is "+Math.round(100*(actualScore/length))+"% accurate");
于 2014-05-09T19:46:46.487 回答
0

假设输入是您的两个句子作为字符串。

然后首先要做的是创建两个临时字符串,消除所有非单词字符(例如标点符号)。通过单词分隔符将句子拆分为字符串数组。

然后你可以分配一个整数变量来得分。为这两个句子创建一个外循环和一个内循环。当句子中的单词匹配时,将变量加 1,从第二个句子中删除单词(用非单词字符替换单词)并跳出内部循环。

此外,请改用此运算符进行单词比较:

===
于 2014-05-09T19:29:27.647 回答
0

你的问题是

if (boxarray[i] = orgarray[i])

单个 = 是赋值运算符。将其替换为

===

做个对比。

于 2014-05-09T19:42:35.690 回答
0

你不是在比较你在分配

if(boxarray[i] = orgarray[i]){ 
              ^^^

所以每次迭代都是如此。修复错字以实际执行您想要的检查

if(boxarray[i] === orgarray[i]){ 
               ^^^

你计算分数的方式看起来是错误的。你应该做类似的事情

var score = orgstr.length;
while...
    if(boxarray[i] === orgarray[i]){ 
        score--;
    }
于 2014-05-09T19:42:43.240 回答
0
{
string1="string1";
string2="string2 is here";
  changepercent(string1,string2);
}

function changepercent(string1,string2) {

  var s1Parts= string1.split(' ');
  var s2Parts= string2.split(' ');

  var matched = 0;

for(var i = 0; i<s1Parts.length; i++)
{
  for(var j = 0; j<s2Parts.length; j++)
      {
        if(s1Parts[i] === s2Parts[j])
         matched++;   
      }

}
  var percentage=(matched/Math.max(s1Parts.length, s2Parts.length))*100;

  console.log(matched);
  console.log(percentage);
if(percentage<50)
{
  console.log("Change Above 50%");
}

}

稍微修改了第一个代码

于 2020-05-28T12:51:28.850 回答