为什么将Argument视为Object而不是Array?
考虑一群绵羊,他们的地方可能会遗漏一些绵羊。我们需要一个函数来计算数组中存在的绵羊数量(true表示存在)。
例如,
[true, true, true, false,
true, true, true, true ,
true, false, true, false,
true, false, false, true ,
true, true, true, true ,
false, false, true, true]
正确答案是17。
function countSheeps(arrayOfSheeps)
{
var num=0;
for(var i=0; i<arrayOfSheeps.lenght(); i++)
{
if(arrayOfSheeps[i]==true){ num=num+1; }
}
return num;
}
var array1 = [true, true, true, false,
true, true, true, true ,
true, false, true, false,
true, false, false, true ,
true, true, true, true ,
false, false, true, true ];
Test.expect(countSheeps(array1) == 17, "There are 17 sheeps in total")
TypeError: Object true,true,true,false,true,true,true,true,true,false,true,false,true,false,false,true,true,true,true,true,false,false,true,true has no method 'lenght'
at countSheeps
0 Passed
0 Failed
1 Errors
Process took 110ms to complete
P.S。我是JS的新手。
答案 0 :(得分:0)
根据评论,您应该将lenght()
更改为length
function countSheeps(arrayOfSheeps)
{
var num=0;
for(var i=0; i<arrayOfSheeps.length; i++)
{
if(arrayOfSheeps[i]==true){ num++; }
}
return num;
}
答案 1 :(得分:0)
为什么将Argument视为Object而不是Array?
因为所有数组都是javascript中的对象。该错误消息基本上包含引用库的类型(它是一个对象,而不是诸如string / number / boolean之类的基本类型)和该对象的.toString()
表示(在您的数组的情况下)布尔值与arrayOfSheeps.join(',')
)相同。
它并没有说arrayOfSheeps
不是一个数组。它只是说数组对象是一个对象。