如何检查在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){ -- }
- 通过使用
hasOwnProperty
:if(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