【问题标题】:Checking if object is Array in Parse.com CloudCode检查 Parse.com CloudCode 中的对象是否为数组
【发布时间】:2014-12-08 12:30:55
【问题描述】:

我在 Parse.com CloudCode 上运行此代码

queryContact.find().then(function(results) {

    console.log(typeof results); // object

    if (results.constructor !== Array) {

        response.success("Found zero results");

    } else {

        console.log("WHY DID IT GO THROUGH!!!");
    }

}).then...

find() 函数通常返回一个数组,但在我的测试用例中它返回 0 个结果。通过登录到控制台,我设法看到在这种情况下结果是typeofobject。只有当resultstypeof Array 时,我才想继续处理else 的情况。但是,我的检查未能捕捉到这一点,并且代码不断落入else 部分。来自this SO question 的所有支票都不适合我。

【问题讨论】:

  • 人们需要停止回答这个问题并投票结束它
  • 感谢乔治的勤奋,但我在我的问题中引用了相同的 SO 问题 - 见底部。因此我的问题在这里。我希望这里有人对 Parse 的 find() 函数和 CloudCode 有经验,以防它们导致某些特定行为
  • 请更好地命名您的问题,如果它通常不是关于“检查对象是否为数组” - 之前已经覆盖了无数次
  • 谢谢,我已经做到了。如果您删除关闭它的建议,我们将不胜感激

标签: javascript arrays parse-platform parse-cloud-code


【解决方案1】:

我最终使用了

if (results.length === 0) {

不知何故,这对我有用。

【讨论】:

  • 这是这个问题的正确答案,因为 Parse.com 总是返回结果数组;你所要做的就是检查它的长度。
  • 你可能是对的,但是返回的数组没有响应/允许自己被识别为数组仍然很奇怪。文档说明该方法返回一个列表,而不是数组。这有区别吗?
【解决方案2】:

检查一个对象是否为数组

 Object.prototype.toString.call(results) === '[object Array]'

【讨论】:

  • 我刚刚测试了它,它不起作用...... else 语句仍然被调用。
  • @artooras 这里有个问题:results 真的是一个数组吗?还是类似数组的对象?
  • 好问题 - 此函数的文档将返回值指定为列表 parse.com/docs/js/symbols/Parse.Query.html#find - 我认为它是一个数组,因为这是我通过 Parse 的 iOS API 得到的
  • 试试console.log(Object.prototype.toString.call(results)) 看看会输出什么
  • 你能告诉我Object.prototype.toString.call(results)的输出是什么吗?
【解决方案3】:

试试这个。

 if( Object.prototype.toString.call( someVar ) === '[object Array]' ) {
   alert( 'Array!' );
 }else{
   alert( 'object!' );
 }

【讨论】:

  • 我刚刚测试了它,它不起作用...... else 语句仍然被调用。
  • 哦,我明白了。 json 响应不相关,因为它包含与 else 案例中稍后发生的代码相关的崩溃错误,如果我可以停止 else 案例完全运行,这将被阻止
【解决方案4】:

您可以使用以下方法返回 JavaScript 类型的名称:

function toType(x) {
  return ({}).toString.call(x).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}

toType([]); // array
toType({}); // object

DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多