2012-12-20 67 views
1

我正在創建一個對象,我正在使用該對象通過ajax將數據帶回服務器。確定對象何時只有某些屬性

根據服務器更新應包含的數據將屬性添加到對象。其中兩個屬性位於每個更新對象中FruitIDPeachID

但是,當更新對象呈現自己的ajax調用並且只有這2個屬性時,我想取消該調用。

我怎樣才能確定一個對象只包含某些屬性?

感謝您的建議。

+0

被警告,它看起來像什麼是錯的體系結構和邏輯您選擇。 – shabunc

回答

1
var obj = {a:"property 1",b:"property 2"} // Or whatever object you want to check. 

if(Object.keys(obj).length == 2  // If the object only has 2 keys, 
    && obj["FruitID"] // And FruitID exists as property of the object, 
    && obj["PeachID"]){ // And PeachID exists as property of the object, 
    // The object only contains FruitID & PeachID; 
} 

或在功能把它包:

function isBaseObject(obj){ 
    return !!(Object.keys(obj).length == 2 && obj["FruitID"] && obj["PeachID"]); // !! to cast the output to a boolean 
} 

isBaseObject({FruitID:"property 1",PeachID:"property 2"}) 
//true 
isBaseObject({FruitID:"property 1",PeachID:"property 2", a:1}) 
//false 
isBaseObject({a:1}) 
//false 
1

聽起來像是你要使用hasOwnProperty

if (myObject.hasOwnProperty("FruitID")) { ... } 

另一種選擇可能是使用Object.keys,但它只是在現代瀏覽器的支持。儘管做比較會更容易,看看是否只有這些屬性存在。

+0

你不能比較這樣的數組。 – alex

+0

Yikes!你是對的。在我回來編輯之前去除那部分,因爲我必須離開。糟糕:( – Bartek

相關問題