如何判断一个Javascript对象是否只有一个特定的键值对?
问题描述:
确定Javascript对象是否只有一个特定的键 - 值对最简单的方法是什么?如何判断一个Javascript对象是否只有一个特定的键值对?
例如,我需要确保存储在变量text
对象只包含键值对“身份证”:“消息”
答
var keys = Object.keys(text), key = keys[0];
if (keys.length !== 1 || key !== "id" || text[key] !== "message")
alert("Wrong object");
答
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");
答
如果你正在谈论的所有枚举的属性(即那些对象及其[[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?
}
}
键值存储区是Javascript中的对象。数组是数字键的一种特殊对象。既然你用“'id”这个关键词来谈论某件事情,那么你肯定是在讨论一个对象而不是数组。 – Chuck
谢谢你纠正这一点。 – FatalKeystroke