Javascript:在条件中比较函数和数组的输出

Javascript: Comparing output of function to array within a conditional

本文关键字:数组 输出 函数 比较 条件 Javascript      更新时间:2023-09-26

我使用这段代码来比较函数的输出(从args数组)和预期输出的数组,并将结果记录在数组中(称为results[],默认填充假值,因此没有其他条件)。

        for(i=0;i<args.length;i++){
          console.log('in for');
          if(f(args[i])==expected[i]){
            console.log('in if');
            results[i] ='true';
          }
        }

当我运行这个函数时,'in for'出现在控制台参数中。长度乘以预期值。然而,"in if"从不出现(即使条件为真)。有什么问题吗?

编辑:将提供更多的细节我正在制作一个网站,人们可以输入js代码来解决某个问题,网站将从文本区获得代码,运行代码,并将其与输出进行比较。

下面是我非常混乱的测试函数,它接受用户输入到文本区域的代码参数:

 function test(inputcode){
      var passed = inputcode;
      var allcorrect = true;
      try{
        eval( "var f = " + passed);
        var args = ["pogchamp","progChamprogCHAMPchamp","pro2GCHAMPCprogH9AMPprogchamp","progchamp19","1pro2champ2prog","progCHamp","Prog Champ"];
        var expected = ['false','false','true','true','true','true','true'];
        var results=['false','false','false','false','false','false','false'];
        for(i=0;i<args.length;i++){
          console.log('in for');
          console.log(f(args[i]));
          console.log(expected[i]);
          if(f(args[i])==expected[i]){
            console.log('in if');
            results[i] ='true';
          }
        }
        for(i=0;i<results.length;i++){
         if(results[i]==false){
          allcorrect=false;
        }
      }
    }
    catch(err){
      alert("Something went wrong. Check your code and resubmit.");
      console.log(err.message);
    }
  }

当我在chrome中运行时,代码的输出是:

in for
false
false
in for 
false 
false 
in for 
false 
true 
in for 
false 
true 
in for 
false 
true 
in for 
false 
true 
in for 
false 
true

在本例中,输入函数(f())只返回false,不做任何其他操作。

function foo(str) {

return false; //auto-generated
}

false'false'之间存在较大差异;前者由test函数返回,是一个布尔值,后者是一个字符串。

例如:

false == 'true'  // false (okay)
false == 'false' // false (hmmm)

expected数组定义更改为:

var expected = [false,false,true,true,true,true,true];

您正在比较字符串'false'和布尔值false。从函数中返回一个字符串或将数组更改为布尔值,它将工作。

非空字符串(即使是'false')始终为真,并且与false相比将返回false