我有一个对象数组,我想在其中获取键的值,例如'多变的'。但 key 的深度是不同的,如下所示 -
[{
"test": {
"nameObj": {
"name": "DateExpires",
"title": "DateExpires",
"variable": "DateTime"
},
}
},
{
"test": {
"nameObjSomethingElse": {
"name": "DateExpires",
"title": "DateExpires",
"variable": "DateTime"
},
}
},
{
"test": {
"nameObjSomethingElse": {
"name": "DateExpires",
"title": "DateExpires",
"anotherLevel": {
"variable": "DateTime"
}
}
}
}]
在数组中的每个对象中,键“变量”处于不同级别并在不同键下。如何获取“变量”的值?
最佳答案
您可以使用 JSON.stringify
并使用其回调函数来识别特定键的每个值:
const obj = [{
"test": {
"nameObj": {
"name": "DateExpires",
"title": "DateExpires",
"variable": "DateTime"
},
}
},
{
"test": {
"nameObjSomethingElse": {
"name": "DateExpires",
"title": "DateExpires",
"variable": "DateTime"
},
}
},
{
"test": {
"nameObjSomethingElse": {
"name": "DateExpires",
"title": "DateExpires",
"anotherLevel": {
"variable": "DateTime"
}
}
}
}];
const variables = [];
JSON.stringify(obj, (key, val) => {
if (key === 'variable') {
variables.push(val);
}
return val;
});
console.log(variables);
或者,如果您想更多地手动递归:
const obj = [{
"test": {
"nameObj": {
"name": "DateExpires",
"title": "DateExpires",
"variable": "DateTime"
},
}
},
{
"test": {
"nameObjSomethingElse": {
"name": "DateExpires",
"title": "DateExpires",
"variable": "DateTime"
},
}
},
{
"test": {
"nameObjSomethingElse": {
"name": "DateExpires",
"title": "DateExpires",
"anotherLevel": {
"variable": "DateTime"
}
}
}
}];
const recurse = (obj, arr=[]) => {
Object.entries(obj).forEach(([key, val]) => {
if (key === 'variable') {
arr.push(val);
}
if (typeof val === 'object') {
recurse(val, arr);
}
});
return arr;
};
console.log(
recurse(obj)
);
关于javascript - 无论对象数组中的深度如何,获取键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57200340/