簡體   English   中英

檢查給定對象的屬性是否存在

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM