Javascript 为什么参数作为对象而不是数组?
为什么参数被视为对象而不是数组Javascript 为什么参数作为对象而不是数组?,javascript,arrays,object,Javascript,Arrays,Object,为什么参数被视为对象而不是数组 问题描述: 考虑一组羊,其中一些羊可能从它们的位置失踪。我们需要一个函数来计算数组中存在的羊的数量(true表示存在) 比如说, [true, true, true, false, true, true, true, true , true, false, true, false, true, false, false, true , true, true, true, true , false, false, tr
问题描述: 考虑一组羊,其中一些羊可能从它们的位置失踪。我们需要一个函数来计算数组中存在的羊的数量(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
我的解决方案:
输出:
另外,我是JS的新手。根据您应该将
lenght()
修改为length
function countSheeps(arrayOfSheeps)
{
var num=0;
for(var i=0; i<arrayOfSheeps.length; i++)
{
if(arrayOfSheeps[i]==true){ num++; }
}
return num;
}
函数countSheeps(arrayOfSheeps)
{
var num=0;
对于(var i=0;i
为什么参数被视为对象而不是数组
因为所有数组都是javascript中的对象。该错误消息基本上包含引用基的类型(这是一个对象,与诸如string/number/boolean之类的基元类型相反)以及该对象的.toString()
表示(对于布尔数组,它与arrayOfSheeps.join(',')
)相同)
它并没有说arrayOfSheeps
不是数组。它只是说数组对象是一个对象。length
与length
不一样。而且,它不是一个函数。所以,arrayOfSheeps.length
就足够了。同样,长度也不是一个函数。只要使用length
我改变了arrayOfSheeps.lenght()到arrayOfSheeps.lenght,但现在它说不正确总共有17只羊它到底在说什么?lenght
仍然拼写不正确!@SharpEdge:基本问题在评论中已经清楚地解决了,我不想再麻烦指出拼写错误。相反,我回答了实际问题:-)当然,但问题显然是错的,用户想知道测试失败的原因,并认为问题是由错误的施法造成的。我认为,对于未来的读者,我们应该将答案作为“答案”发布不要把它们放在评论区。@SharpEdge:我没有看到任何证据表明用户不想知道他在问什么-标题和他的问题都是“为什么参数是对象而不是数组?”,而不是“为什么我的代码不起作用?”
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
function countSheeps(arrayOfSheeps)
{
var num=0;
for(var i=0; i<arrayOfSheeps.length; i++)
{
if(arrayOfSheeps[i]==true){ num++; }
}
return num;
}