javascript - 如何在单键值对数组中获取嵌套的 json 对象值
问题描述
我有嵌套的 json 对象数组,我想以单键值对的格式从嵌套数组中获取值,以传递给 http 调用而不是我需要数组的单个对象
[{
"menu_id":1,
"parent_menu_id":0,
"children":[
{
"menu_id":2,
"parent_menu_id":1,
"children":[
{
"menu_id":3,
"parent_menu_id":2,
"children":[
]
}
]
}
]
},
{
"menu_id":5,
"parent_menu_id":0,
"children":[
{
"menu_id":6,
"parent_menu_id":5,
"children":[
{
"menu_id":7,
"parent_menu_id":6,
"children":[
]
}
]
}
]
}]
我需要数组格式的结果
[
{
"menu_id":1,
"parent_menu_id":0
},
{
"menu_id":2,
"parent_menu_id":1
},
{
"menu_id":3,
"parent_menu_id":2
}
]
解决方案
您可以为此创建一个递归函数。
function toFlatArray(obj) {
let result = [];
result.push({
menu_id: obj.menu_id,
parent_menu_id: obj.parent_menu_id
});
if (obj.children && obj.children.length) {
obj.children.forEach(child => {
result = result.concat(toFlatArray(child));
});
}
return result;
}
// added another method to run forEach
function toFlatArrayFromArray(arr) {
let result = [];
arr.forEach(obj => {
result = result.concat(toFlatArray(obj));
});
return result;
}
const myObj = [{
"menu_id":1,
"parent_menu_id":0,
"children":[
{
"menu_id":2,
"parent_menu_id":1,
"children":[
{
"menu_id":3,
"parent_menu_id":2,
"children":[
]
}
]
}
]
},
{
"menu_id":5,
"parent_menu_id":0,
"children":[
{
"menu_id":6,
"parent_menu_id":5,
"children":[
{
"menu_id":7,
"parent_menu_id":6,
"children":[
]
}
]
}
]
}];
console.log(toFlatArrayFromArray(myObj));
推荐阅读
- c# - Xamarin Map 并将用户返回到应用程序和位置错误
- sql - Postgres SELECT * 从大表中
- php - 提醒用户邮件提交需要几秒钟才能完成
- python - Scikit-learn 管道类型错误:zip 参数 #2 必须支持迭代
- python - SQL:从可能在另一个表中的列中获取值
- c# - 调试模式下的 Visual Studio 在文件协议中打开
- java - 如何通过比较两个列表从一个列表中删除元素
- html - Body with height: 100% 展开到页面外(移动 10px 到底部)
- javascript - Javascript 柯里化函数
- sql - 通过 Spark 程序或 Hive 将 DDL 语句转换为 DDL 语句