Javascript 比较两个数组的内容,接收错误为;对象#<;对象>;没有方法';指数'&引用;

Javascript 比较两个数组的内容,接收错误为;对象#<;对象>;没有方法';指数'&引用;,javascript,arrays,parse-platform,Javascript,Arrays,Parse Platform,我要做的是返回前2个类别,然后将它们与“userCategory”数组进行比较,看看是否有匹配的类别。它成功返回前2个,但似乎无法识别userCategory数组 理想情况下,我希望每个用户都有userCategory对象的多个实例(一个用于智能手机,一个用于鞋子,等等)。似乎将其创建为数组可能不正确,因为它没有正确初始化。感谢您的帮助 完整错误消息: Failed with: TypeError: Object #<Object> has no method 'indexOf'

我要做的是返回前2个类别,然后将它们与“userCategory”数组进行比较,看看是否有匹配的类别。它成功返回前2个,但似乎无法识别userCategory数组

理想情况下,我希望每个用户都有userCategory对象的多个实例(一个用于智能手机,一个用于鞋子,等等)。似乎将其创建为数组可能不正确,因为它没有正确初始化。感谢您的帮助

完整错误消息:

Failed with: TypeError: Object #<Object> has no method 'indexOf'
    at main.js:60:33
    at Array.some (native)
    at Object.Parse.Cloud.httpRequest.success (main.js:59:86)
    at Object.<anonymous> (<anonymous>:571:19)
它引用的第60行是:

return userCategory.indexOf(item) > -1;

您将userCategory定义为一个对象,该对象没有方法
indexOf

var userCategory = {}; 
您应该将userCategory声明为数组

var userCategory = []; 
在您的代码中,
categoryResults[id]
并没有将对象添加到数组中,而是在对象上创建属性

要将对象添加到阵列中,可以使用:

userCategory.push(yourObjectHere)

indexOf
是数组的一种方法,而不是对象,您希望使用带括号的简单查找,或者使用中的
运算符。在错误的
var userCategory={}上2行。看起来不像一个数组。这会使userCategory数组是可变的,并且随着时间的推移可以添加内容吗?此外,进行此更改现在会出现以下错误:
失败原因:成功/错误未被称为I2014-04-14T18:34:09.856Z]前两个类别:203499355 I2014-04-14T18:34:09.856Z]false I2014-04-14T18:34:09.857Z][
您可以使用userCategory.push(yourObjectHere)将对象添加到数组中
userCategory.push(yourObjectHere)