typeof返回对象,但出现错误:“未定义不是对象”

时间:2019-10-08 03:33:17

标签: javascript react-native

我目前正在使用以下名为data的对象:

Object {
   "getOrder": Array [
      Object {
         "__typename": "Order",
         "id": 1,
         "items": Array [
            Object {
               "__typename": "Item",
               "id": 1,
            },
            Object {
            "__typename": "Item",
            "id": 2,
         },
      ],
   },
 ],
}

当我尝试访问data.getOrder时,出现错误undefined is not an object。当我console.log(typeof data.getOrder)时,它输出对象。当我只打印data.getOrder时,它会正确打印上面的数组。

为什么当我尝试做data.getOrder[0]时出现上述错误?在我看来,这是一个基于我正在打印和检查的对象。

2 个答案:

答案 0 :(得分:1)

您可以尝试

console.log(typeof data.getOrder[0]);

并使用它

data.getOrder[0].id

因为getOrderArray

如果使用typeof获取数组的数据类型,则结果为object

要检查阵列

function isArray(a){
    return (
        typeof(a) === Object.name.toLowerCase() && (
            a instanceof Array || 
            Object.prototype.toString.call(a) === '[object Array]'
        )
    );
}

答案 1 :(得分:0)

let data = {
  "getOrder": [{
    "__typename": "Order",
    "id": 1,
    "items": [{
        "__typename": "Item",
        "id": 1,
      },
      {
        "__typename": "Item",
        "id": 2,
      }
    ]
  }]
}

console.log(data.getOrder[0].__typename);
console.log(data.getOrder[0].items[0].__typename);
console.log(data.getOrder[0].items[1].id);