如何检查对象内部是否存在动态 属性?
How to check for the existence of dynamic property inside an object?
const result = {
"MEN": [],
"WOMEN": [],
"KIDS TEMP": [
"BCDEFHJJJJJJ34EEE234",
"ABCDEFGHIJKL12345678"
]
}
const result = {
"MEN": [],
"WOMEN": [],
"CHILDREN TEMP": [
"BCDEFHJJJJJJ34EEE234",
"ABCDEFGHIJKL12345678"
]
}
我有一个像上面那样的对象 result
。有时,它可能有 KIDS TEMP
属性,有时 CHILDREN TEMP
。由于这个 属性 有空格,我不能使用点运算符来获取这些属性。
如果 KIDS TEMP
或 CHILDREN TEMP
存在,我想创建一个标志。
我在下面尝试过:-
const part = 'KIDS TEMP' || 'CHILDREN TEMP';
let check;
if (result) {
check = !!(result?.MEN.length !== 0 || result[part].length !== 0);
}
但是当我收到 CHILDREN TEMP
说它无法读取未定义的长度时,上面的代码中断了。
我该如何解决这个问题?
Object.keys()
returns 对象的 属性 名称。你可以这样检查,如果一个对象拥有某个 属性:
const result = {
"MEN": [],
"WOMEN": [],
"KIDS TEMP": [
"BCDEFHJJJJJJ34EEE234",
"ABCDEFGHIJKL12345678"
]
}
console.log(Object.keys(result).includes("KIDS TEMP"));
console.log(Object.keys(result).includes("CHILDREN TEMP"));
如果要测试,某个属性是否存在,如果存在,包含一个non-empty数组,可以这样测试:
const result = {
"MEN": [],
"WOMEN": [],
"KIDS TEMP": [
"BCDEFHJJJJJJ34EEE234",
"ABCDEFGHIJKL12345678"
]
}
console.log(result["KIDS TEMP"]?.length > 0);
console.log(result["CHILDREN TEMP"]?.length > 0);
您的代码的主要问题是 const part = string1 || string2
的计算结果总是 string1
,这不是您想要的。
您可以使用 Object 的方法 hasOwnProperty 它会 return true/false
取决于 属性 是否存在于对象中。
const result = {
"MEN": [],
"WOMEN": [],
"KIDS TEMP": [
"BCDEFHJJJJJJ34EEE234",
"ABCDEFGHIJKL12345678"
]
}
console.log(result.hasOwnProperty('KIDS TEMP'),result.hasOwnProperty('CHILDREN TEMP'));
const result = {
"MEN": [],
"WOMEN": [],
"KIDS TEMP": [
"BCDEFHJJJJJJ34EEE234",
"ABCDEFGHIJKL12345678"
]
}
const result = {
"MEN": [],
"WOMEN": [],
"CHILDREN TEMP": [
"BCDEFHJJJJJJ34EEE234",
"ABCDEFGHIJKL12345678"
]
}
我有一个像上面那样的对象 result
。有时,它可能有 KIDS TEMP
属性,有时 CHILDREN TEMP
。由于这个 属性 有空格,我不能使用点运算符来获取这些属性。
如果 KIDS TEMP
或 CHILDREN TEMP
存在,我想创建一个标志。
我在下面尝试过:-
const part = 'KIDS TEMP' || 'CHILDREN TEMP';
let check;
if (result) {
check = !!(result?.MEN.length !== 0 || result[part].length !== 0);
}
但是当我收到 CHILDREN TEMP
说它无法读取未定义的长度时,上面的代码中断了。
我该如何解决这个问题?
Object.keys()
returns 对象的 属性 名称。你可以这样检查,如果一个对象拥有某个 属性:
const result = {
"MEN": [],
"WOMEN": [],
"KIDS TEMP": [
"BCDEFHJJJJJJ34EEE234",
"ABCDEFGHIJKL12345678"
]
}
console.log(Object.keys(result).includes("KIDS TEMP"));
console.log(Object.keys(result).includes("CHILDREN TEMP"));
如果要测试,某个属性是否存在,如果存在,包含一个non-empty数组,可以这样测试:
const result = {
"MEN": [],
"WOMEN": [],
"KIDS TEMP": [
"BCDEFHJJJJJJ34EEE234",
"ABCDEFGHIJKL12345678"
]
}
console.log(result["KIDS TEMP"]?.length > 0);
console.log(result["CHILDREN TEMP"]?.length > 0);
您的代码的主要问题是 const part = string1 || string2
的计算结果总是 string1
,这不是您想要的。
您可以使用 Object 的方法 hasOwnProperty 它会 return true/false
取决于 属性 是否存在于对象中。
const result = {
"MEN": [],
"WOMEN": [],
"KIDS TEMP": [
"BCDEFHJJJJJJ34EEE234",
"ABCDEFGHIJKL12345678"
]
}
console.log(result.hasOwnProperty('KIDS TEMP'),result.hasOwnProperty('CHILDREN TEMP'));