Javascriptオブジェクトに特定のキーと値のペアが1つしかないかどうかを判断する最も簡単な方法は何でしょうか。
たとえば、変数に格納されているオブジェクトtext
にキーと値のペアのみが含まれていることを確認する必要があります'id' : 'message'
Javascriptオブジェクトに特定のキーと値のペアが1つしかないかどうかを判断する最も簡単な方法は何でしょうか。
たとえば、変数に格納されているオブジェクトtext
にキーと値のペアのみが含まれていることを確認する必要があります'id' : 'message'
var keys = Object.keys(text);
var key = keys[0];
if (keys.length !== 1 || key !== "id" || text[key] !== "message")
alert("Wrong object");
列挙可能なすべてのプロパティ(つまり、オブジェクトとその[[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?
}
}
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');
必要なプロパティがわかっている場合は、オブジェクトの浅いコピーを作成する方が早いのではないでしょうか。すべてを削除する必要はありません。
var text = {
id : "message",
badProperty : "ugougo"
}
text = { id : text.id }
私があなたの質問を正しく理解したと仮定して...
あなたはそれを文字列化し、それを正規表現と一致させることを試みることができます。例:
if (JSON.stringify(test).match(/\"id":\"message\"/)) {
console.log("bingo");
}
else console.log("not found");