JS如何判断key是否存在于JSON KVP结构中?
JS how to determine if key exists in JSON KVP structure?
对于 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
对吗?
这不是有效的 JavaScript 对象。如果要测试对象上是否存在 属性,请使用:
如果 属性 存在并且值为 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
您的代码无效 - 您有 [ ]
个方括号,它们分隔了一个数组,但您似乎正试图将一个对象放入其中。你需要这个。
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]);
对于 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
对吗?
这不是有效的 JavaScript 对象。如果要测试对象上是否存在 属性,请使用:
如果 属性 存在并且值为 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
您的代码无效 - 您有 [ ]
个方括号,它们分隔了一个数组,但您似乎正试图将一个对象放入其中。你需要这个。
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]);