确定Javascript对象是否只有一个特定键值对的最简单方法是什么?
例如,我需要确保存储在变量text
中的对象仅包含键值对'id':'message'
答案 0 :(得分:5)
var keys = Object.keys(text), key = keys[0];
if (keys.length !== 1 || key !== "id" || text[key] !== "message")
alert("Wrong object");
答案 1 :(得分:1)
你可以对其进行字符串化并尝试将其与regEx匹配。例如:
if (JSON.stringify(test).match(/\"id":\"message\"/)) {
console.log("bingo");
}
else console.log("not found");
答案 2 :(得分:1)
如果您正在谈论所有可枚举的属性(即对象及其[[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?
}
}
答案 3 :(得分: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');
答案 4 :(得分:0)
如果你知道你想要的属性,那么只是制作一个浅层的对象,不需要修剪一切就不会更快吗?
var text = {
id : "message",
badProperty : "ugougo"
}
text = { id : text.id }
假设我已正确理解你的问题......