{
"myJSONArrayObject": [
{
"12": {}
},
{
"22": {}
}
]
}
我有上面的JSON Array对象。如何检查 myJSONArrayObject
是否具有特定密钥?
此方法无效:
let myIntegerKey = 12;
if (myJSONArrayObject.hasOwnProperty(myIntegerKey))
continue;
当它包含一个键时,它似乎返回false;而当它不包含键时,它返回true。
答案 0 :(得分:3)
myJSONArrayObject
是一个数组。它没有12
作为属性(除非数组中有12个以上的项目)
因此,检查数组中的some
个对象是否具有myIntegerKey
作为属性
const exists = data.myJSONArrayObject.some(o => myIntegerKey in o)
或者如果myIntegerKey
始终是自己属性
const exists = data.myJSONArrayObject.some(o => o.hasOwnProperty(myIntegerKey))
这是一个片段:
const data={myJSONArrayObject:[{"12":{}},{"22":{}}]},
myIntegerKey = 12,
exists = data.myJSONArrayObject.some(o => myIntegerKey in o);
console.log(exists)
答案 1 :(得分:0)
"myJSONArrayObject"
是一个数组,因此您必须检查hasOwnProperty
的每个元素:
let myIntegerKey = 12;
for (var obj in myJSONArrayObject) {
console.log(obj.hasOwnProperty(myIntegerKey));
}
答案 2 :(得分:0)
const obj = {
myJSONArrayObject: [
{
12: {},
},
{
22: {},
},
],
};
const myIntegerKey = '12';
const isExist = obj.myJSONArrayObject.findIndex((f) => { return f[myIntegerKey]; }) > -1;
console.log(isExist);
您可以使用every()
使其更快
const obj = {
myJSONArrayObject: [
{
22: {},
},
{
12: {},
},
],
};
const myIntegerKey = '12';
const isExist = !obj.myJSONArrayObject
.every((f) => {
return !f[myIntegerKey];
});
console.log(isExist);
注意:此处的键名(
12: {},
)不依赖于typeof myIntegerKey
,12
和'12'
都将返回{{ 1}}。
答案 3 :(得分:0)
通过键检索对象的最直接方法是使用JavaScript bracket notation。同样,也使用find
方法遍历数组。
const obj = {
myJSONArrayObject: [{
12: {},
},
{
22: {},
},
],
};
const myIntegerKey = 12;
const myObject = obj.myJSONArrayObject.find(item => item[myIntegerKey]);
console.log("exists", myObject !== undefined);