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;
}