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

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

有时我会以这种forms得到答复

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

有时我会以这种forms得到回应

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

如何检查在JavaScript对象中是否存在钥匙?

既然你不知道对象是否在那里,那么你可以检查response['prop']语法。 您也可以使用点语法进行检查,就像上面所做的那样,但我更喜欢这种方式。 我陷入了这种习惯,因为response.prop语法在Typescript中不起作用,除非编译器清楚地知道属性。

 if (serverResponse && serverResponse['vehicle']) { // vehicle key exists // do your stuff } else { // vehicle key Does Not exist // do your stuff } 

有多种方式来执行检查:

 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){ -- }

JS对象很容易检查,因为如果你试图访问它并且它不存在,就不会抛出错误。 所以你可以简单地这样检查:

 let response = { "regatta_name":"ProbaRegatta", "country":"Congo", "status":"invited", "vehicle": "yes" }; if(response.vehicle) { // or if(response["vehicle"]) // do stuff } 

这是有效的,因为如果JS在对象中找不到属性“车辆”,它将失败这个条件。 所以如果属性确实存在,代码将进入if块,并且可以使用对象中的数据。

通过使用In Operator应该可以帮助您检查属性是否在对象中。

请检查文件,希望这会有所帮助。

所以首先假定对象被存储如下:

 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