我从服务器获取了一些JSON值,但我不知道是否会有特定的字段。
有时我会以这种形式获得回复
{
"regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited"
}
有时我会以这种形式得到回应
{
"regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited",
"vehicle": "yes"
}
如何检查javascript对象中是否存在车辆键。?
答案 0 :(得分:4)
有多种方法可以进行检查:
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){ -- }
答案 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)