对于像这样结构的JSON:
descriptors = {"key1" : { "propertyA": "propertyA-value1",
"propertyB": "propertyB-value1" },
"key2" : { "propertyA": "propertyA-value2",
"propertyB": "propertyB-value2" }}
如何确定给定密钥是否存在?
# argKey is function arg supplied by caller
descriptor = descriptors[argKey]
if descriptor != undefined
# do something with descriptor
是吗?
答案 0 :(得分:1)
您的代码无效 - 您有[ ]
括号,用于分隔数组,但您似乎正在尝试将对象放入其中。你需要这个。
descriptors = {"key1" : { "propertyA": "propertyA-value1",
"propertyB": "propertyB-value1" },
"key2" : { "propertyA": "propertyA-value2",
"propertyB": "propertyB-value2" }};
除此之外,要测试是否存在属性,您可以使用in
运算符。
'key1' in descriptors;
>> true
由于测试键只是一个字符串,如果事先不知道它,你可以将它存储在一个变量中。
var keyName = 'key1';
if (keyName in descriptors) {
// do something
}
根据您在评论中的问题,要访问该属性的值,您可以说
descriptors[keyName];
// More deeply nested example
var keyName = 'key1';
var propName = 'propertyA';
console.log(descriptors[keyName][propName]);
答案 1 :(得分:0)
这不是一个有效的JavaScript对象。如果要测试对象上是否存在属性,请使用:
答案 2 :(得分:0)
如果该属性存在且值为undefined
,则您的解决方案将无效。请使用typeof
或hasOwnProperty
进行检查:
var obj = {
prop: undefined
};
console.log(obj.prop === undefined); // true
console.log(typeof obj.prop === undefined); // false
console.log(!obj.hasOwnProperty("prop")); // false