如何在javascript中检查来自服务器的数据中是否存在密钥?

时间:2017-11-30 16:24:28

标签: javascript json node.js

我从服务器获取了一些JSON值,但我不知道是否会有特定的字段。

有时我会以这种形式获得回复

{
 "regatta_name":"ProbaRegatta",
  "country":"Congo",
  "status":"invited"
}

有时我会以这种形式得到回应

{
 "regatta_name":"ProbaRegatta",
  "country":"Congo",
  "status":"invited",
   "vehicle": "yes"
}

如何检查javascript对象中是否存在车辆键。?

5 个答案:

答案 0 :(得分:4)

有多种方法可以进行检查:

const obj = {
   "regatta_name":"ProbaRegatta",
   "country":"Congo",
   "status":"invited",
   "vehicle": "yes"
};
  • 使用in运算符:if("vehicle" in obj){ -- }
  • 使用hasOwnPropertyif(obj.hasOwnProperty("vehicle")){ -- }
  • 选中:if(obj["vehicle"]){ -- }if(obj.vehicle){ -- }

答案 1 :(得分:3)

由于您不知道对象是否存在,因此您可以使用<Collection />语法进行检查。您也可以使用点语法检查,如上所述,但我更喜欢这种方式。我养成了这种习惯,因为response['prop']语法在Typescript中不起作用,除非编译器清楚地知道该属性。

response.prop

答案 2 :(得分:2)

JS对象非常容易检查,因为如果您尝试访问它并且它不存在,则不会抛出任何错误。所以你可以这样检查:

let response = {
   "regatta_name":"ProbaRegatta",
   "country":"Congo",
   "status":"invited",
   "vehicle": "yes"
};

if(response.vehicle) { // or if(response["vehicle"])
    // do stuff
}

这是有效的,因为如果JS无法在对象中找到属性“vehicle”,它将失败此条件。因此,如果属性确实存在,代码将进入if块,您可以使用对象中的数据。

答案 3 :(得分:1)

首先,假设对象存储如下:

obj1 = {
 "regatta_name":"ProbaRegatta",
  "country":"Congo",
  "status":"invited"
}

obj2 = {
 "regatta_name":"ProbaRegatta",
  "country":"Congo",
  "status":"invited",
  "vehicle": "yes"
}

简单地检查

if('vehicle' in obj1){
 console.log(true)
}

if('vehicle' in obj2){
 console.log(true)
}

您获得的输出将为false, true

此外,如果需要,您可以使用hasOwnProperty。即。

obj1.hasOwnProperty('vehicle') // false
obj2.hasOwnProperty('vehicle') // true

答案 4 :(得分:0)

您可能需要

JsonObj.hasOwnProperty('key')

选中此refrence link