Javascript 检查给定对象的属性是否存在

Javascript 检查给定对象的属性是否存在,javascript,Javascript,我正在检查myObj是否具有“x”属性。然而,当myObj没有我要找的财产时,我不会返回任何东西。代码如下: var myObj = { gift: "pony", pet: "kitten", bed: "sleigh" }; function checkObj(checkProp) { if(myObj.hasOwnProperty("gift")){ return myObj[checkProp]; } else if(myObj

我正在检查myObj是否具有“x”属性。然而,当myObj没有我要找的财产时,我不会返回任何东西。代码如下:

var myObj = { gift: "pony", pet: "kitten", bed: "sleigh" }; function checkObj(checkProp) { if(myObj.hasOwnProperty("gift")){ return myObj[checkProp]; } else if(myObj.hasOwnProperty("pet")){ return myObj[checkProp]; } else if(myObj.hasOwnProperty("bed")){ return myObj[checkprop]; } else { return "Not Found"; } } var myObj={ 礼物:“小马”, 宠物:“小猫”, 床:“雪橇” }; 功能checkObj(checkProp){ 如果(myObj.hasOwnProperty(“礼物”)){ 返回myObj[checkProp]; }else if(myObj.hasOwnProperty(“宠物”)){ 返回myObj[checkProp]; }否则,如果(myObj.hasOwnProperty(“床”)){ 返回myObj[checkprop]; }否则{ 返回“未找到”; } }
您应该检查正在传递的属性,而不是在if子句中硬编码属性。这可以简化为三元运算符。 因为如果您有一个存储属性的变量,请使用[]符号,该符号使用属性的值在对象内部进行查找

若checkProp变量是'gift',则当使用checkProp变量的值时,myObj[checkProp]变成myObj.gift

function checkObj(checkProp) {
   return myObj[checkProp]?myObj[checkProp]:"Not found"
}
注意:
if(myObj.hasOwnProperty(“gift”)
将始终输入,因为
myObj
具有属性
gift
,因此不会评估其他条件

难道你不想这样做吗

var myObj={
礼物:“小马”,
宠物:“小猫”,
床:“雪橇”
};
功能checkObj(checkProp){
if(myObj.hasOwnProperty(checkProp)){
返回myObj[checkProp];
}
否则{
返回“未找到”;
}
}
console.log(checkObj(“礼物”));
console.log(checkObj(“foo”))您可以使用获取自己属性的列表,然后调用查找特定属性并返回其值

const myObj={
礼物:“小马”,
宠物:“小猫”,
床:“雪橇”
};
功能检查OBJ(myObj,键){
返回Object.keys(myObj).includes(key)?myObj[key]:“未找到”;
}
log(checkObj(myObj,'gift');
log(checkObj(myObj,'pet');
log(checkObj(myObj,'foo')您可以使用来测试指定的属性是否在对象中:

const myObj={
礼物:“小马”,
宠物:“小猫”,
床:“雪橇”
};
函数getProp(对象,prop){
返回obj中的道具?obj[道具]:未定义;
}
log(getProp(myObj,'gift');
log(getProp(myObj,'pet');
console.log(getProp(myObj,'bed'));
log(getProp(myObj,'noProp')