[英]Check if the property of a given object exists or not
我正在嘗試檢查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"; } }
注意:
if (myObj.hasOwnProperty("gift"))
將始終輸入,因為myObj
具有屬性gift
因此永遠不會評估其他條件。
你不想這樣做嗎?
var myObj = { gift: "pony", pet: "kitten", bed: "sleigh" }; function checkObj(checkProp) { if (myObj.hasOwnProperty(checkProp)) { return myObj[checkProp]; } else { return "Not Found"; } } console.log(checkObj("gift")); console.log(checkObj("foo"));
您應該檢查您傳遞的屬性,而不是在if子句中對屬性進行硬編碼。然后可以將其縮減為三元運算符。 因為如果您有一個存儲屬性的變量,請使用[]表示法,該表示法使用屬性的值在對象內查找。
如果checkProp變量是'gift',則myObj [checkProp]變為myObj.gift,因為使用了checkProp變量的值。
function checkObj(checkProp) {
return myObj[checkProp]?myObj[checkProp]:"Not found"
}
您可以使用Object.keys
來獲取自己的屬性列表,然后調用Array.includes
來查找特定屬性並返回它的值。
const myObj = { gift: "pony", pet: "kitten", bed: "sleigh" }; function checkObj(myObj, key){ return Object.keys(myObj).includes(key) ? myObj[key] : "Not found"; } console.log(checkObj(myObj, 'gift')); console.log(checkObj(myObj, 'pet')); console.log(checkObj(myObj, 'foo'));
您可以使用in
運算符來測試指定的屬性是否在對象中:
const myObj = { gift: "pony", pet: "kitten", bed: "sleigh" }; function getProp(obj, prop) { return prop in obj ? obj[prop] : undefined; } console.log(getProp(myObj, 'gift')); console.log(getProp(myObj, 'pet')); console.log(getProp(myObj, 'bed')); console.log(getProp(myObj, 'noProp'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.