Javascript:如何逐字比较句子

Javascript:如何逐字比较句子,javascript,arrays,compare,sentence,Javascript,Arrays,Compare,Sentence,我正在创建一个带有自定义选项的打字导师 不是专业人士(不要因为我做错了人,做错了地方而生气),但多亏了stackoverflow.com等有用的论坛和贡献的流量/人,我能够在一两天内解决问题 马上,这里 while (i < len+1){ if(boxarray[i] == orgarray[i]){ ++i; actualScore = i - 1; } while(i

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

不是专业人士(不要因为我做错了人,做错了地方而生气),但多亏了stackoverflow.com等有用的论坛和贡献的流量/人,我能够在一两天内解决问题

马上,这里

    while (i < len+1){
      if(boxarray[i] == orgarray[i]){
    ++i;
        actualScore = i - 1;
      }
while(i
我已经搜索过了,“==”运算符没有用,我不会选择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);
    }
var paratext=document.getElementById('typethis').innerHTML;
var orgstr=“开始在黄色框中键入:BtXr,但请不要拉屎。”;
var-boxtext=document.getElementById('usit').value;
var endtrim=boxtext;
var实际核心;
var orgarray=listToArray(orgstr,“”);
var-boxarray=listToArray(boxtext,“”);
var len=boxarray.length;
var i=0;
var actualScore;//注意var未定义这是我犯的一个错误[edit]
如果(orgstr.indexOf(boxtext)!=-1){
而(i
假设输入是字符串形式的两句话

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

然后,您可以指定一个整数变量进行评分。为两个句子创建一个外循环和一个内循环。当单词在句子中匹配时,将变量增加1,从第二个句子中删除单词(将单词替换为非单词字符),然后断开内循环

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

===

如果我按照你的要求做,像这样的事情怎么样:

var s1='狗睡觉';
var s2=‘狗慢跑’;
变量s1Parts=s1.分割(“”);
var s2Parts=s2.分割(“”);
var得分=0;
对于(var i=0;i而言,您的问题是

if (boxarray[i] = orgarray[i])
single=是赋值运算符。将其替换为

===

作为比较。

您不是在比较,而是在分配

if(boxarray[i] = orgarray[i]){ 
              ^^^
因此,在每次迭代中都是正确的。修复输入错误以实际执行您想要的检查

if(boxarray[i] === orgarray[i]){ 
               ^^^
而你计算分数的方式看起来是错误的。你应该这样做

var score = orgstr.length;
while...
    if(boxarray[i] === orgarray[i]){ 
        score--;
    }

以下内容将比较每个字符,减少每个不等式的“actualScore”:

var sentence1=“这是原始句子。”,//原始文本
sentence2=“这是原始句子。”,//用户键入的内容
长度=句子1.长度,
actualScore=length,//以满分开始
i=0;
而(i
{
string1=“string1”;
string2=“string2在这里”;
变更百分比(第1条、第2条);
}
函数更改百分比(string1、string2){
变量s1Parts=string1.拆分(“”);
var s2Parts=string2.拆分(“”);
var=0;

对于(var i=0;i如何粘贴在此处,这不允许有太多的代码空间?编辑您的问题。欢迎使用堆栈溢出。好的,完成了。是的,他们这样做了,但请记住我们是需要帮助的人。@WikiMalik发布了另一个答案。再试一次。在您的第一个代码中,您编写了
if(boxarray[i]==orgarray[i]){
但是在您编写的第二个
if(boxarray[i]=orgarray[i]){
我不知道你是否更改了它,但你需要使用==进行比较。我使用了代码,它是word!谢谢你。你已经节省了一天。应该使用
==
来代替。将我的答案更改为===。记录在案,它功能齐全,但性能会更好==。我可以找到最简单的解释:“===永远不会比==慢。它们都进行类型检查,因此===与==相比不会做任何额外的事情,但是类型检查可能会允许===在类型不相同时更快退出。”有关更多参考,请参阅此链接。
var score = orgstr.length;
while...
    if(boxarray[i] === orgarray[i]){ 
        score--;
    }
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");
{
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%");
}

}