2012-09-21 43 views
0

確定Javascript對象是否只有一個特定的鍵 - 值對最簡單的方法是什麼?如何判斷一個Javascript對象是否只有一個特定的鍵值對?

例如,我需要確保存儲在變量text對象只包含鍵值對「身份證」:「消息」

+0

鍵值存儲區是Javascript中的對象。數組是數字鍵的一種特殊對象。既然你用「'id」這個關鍵詞來談論某件事情,那麼你肯定是在討論一個對象而不是數組。 – Chuck

+0

謝謝你糾正這一點。 – FatalKeystroke

回答

2
var keys = Object.keys(text), key = keys[0]; 

if (keys.length !== 1 || key !== "id" || text[key] !== "message") 
    alert("Wrong object"); 
0
var moreThanOneProp = false; 
for (var i in text) { 
    if (i != 'id' || text[i] != 'message') { 
     moreThanOneProp = true; 
     break; 
    } 
} 

if (!moreThanOneProp) 
    alert('text has only one property'); 
0

如果您知道屬性你想要,只是製作一個對象的淺拷貝不會更快,修剪所有東西都不需要?

var text = { 
    id : "message", 
    badProperty : "ugougo" 
} 

text = { id : text.id } 

假設我理解正確你的問題......

1

可以字符串化,並設法用一個正則表達式匹配。例如:

if (JSON.stringify(test).match(/\"id":\"message\"/)) { 
    console.log("bingo"); 
} 
else console.log("not found"); 
0

如果你正在談論的所有枚舉的屬性(即那些對象及其[[Prototype]]鏈上),你可以這樣做:

for (var prop in obj) { 

    if (!(prop == 'id' && obj[prop] == 'message')) { 
    // do what? 
    } 
} 

如果你只是想測試的枚舉的屬性對象本身,則:

for (var prop in obj) { 

    if (obj.hasOwnProperty(prop) && !(prop == 'id' && obj[prop] == 'message')) { 
    // do what? 
    } 
} 
相關問題