如何遍历多层JSON对象并提取指定键值生成新的Javascript对象
实现方法(JavaScript)
你可以结合Object.entries()遍历原对象的venue属性的所有键值对,再用map()提取每个数组元素的Status字段即可,核心逻辑如下:
// 原数据 const originalData = { "venue": { "time1": [ { "Status": "Available" }, { "Status": "Unavailable" }, { "Status": "Unavailable" } ], "time2": [ { "Status": "Available" }, { "Status": "Available" }, { "Status": "Unavailable" } ] } }; // 转换逻辑 const result = Object.fromEntries( Object.entries(originalData.venue).map(([timeKey, statusList]) => { return [timeKey, statusList.map(item => item.Status)] }) );
执行后result就是你要的目标结构:
{ "time1": ["Available", "Unavailable", "Unavailable"], "time2": ["Available", "Available", "Unavailable"] }
逻辑说明
- 用
Object.entries(originalData.venue)把venue对象的键值对转换成[['time1', 数组], ['time2', 数组]]格式的二维数组,方便遍历 - 对每一组键值对,用
map()遍历对应时间下的状态对象数组,提取每个元素的Status属性组成新数组 - 最后用
Object.fromEntries()把处理后的二维数组转回对象格式
如果需要其他语言的实现,调整对应语法即可,核心逻辑都是遍历外层时间键,内层映射取Status字段。
内容的提问来源于stack exchange,提问作者i-am-niall
相关产品推荐
相关产品推荐

