Javascript:在条件中比较函数和数组的输出
Javascript: Comparing output of function to array within a conditional
我使用这段代码来比较函数的输出(从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
。
相关文章:
- PHP中的数组输出
- 如何将javascript数组输出到表中
- 如何将JavaScript数组输出到HTML链接
- 需要javascript函数的数组输出
- 从javascript数组输出随机项
- 带有数字的字符串数组输出
- Mirth 连接错误:“..不是 XML 对象“时尝试从数组输出文本
- 如何在 javascript for 循环中从数组输出元素
- 不断出现逻辑错误,将我的数组输出减少到一堆零
- 向序列化数组输出添加新行
- PHP数组输出到javascript函数
- 使用JS从数组输出随机图像
- 从字节数组输出PHP格式的PDF
- MustacheJavaScript:循环对象数组输出
- 如何使数组输出使用A面文本而不是B面文本
- 如何在java8中获得js函数的数组输出
- PHP到JSON数组输出是错误的
- 从数组输出键
- 不能显示数组输出
- 从多维数组输出的数据属性选择器