javascript - Javascript - 遍历 Json 对象并获取每个项目的层次键,包括嵌套对象和数组
问题描述
我想获取任何 JSON 对象的值和键,包括这些作为通用方法,即使是复杂对象也可以使用
json
{
"timezone": 5.5,
"schedule": {
"type": "daily",
"options": {
"hour": 10,
"minute": 29
}
}
想要分层架构中的值和键就像这些
timezone - 5.5
schedule.type - daily
schedule.type.options.hour - 10
schedule.type.options.minute - 29
另外,我使用这个函数可以获取 JSON 对象的所有对象键和值,即使在嵌套数组和对象中也是如此
function iterate(obj) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
if (typeof obj[property] == "object") {
iterate(obj[property]);
} else {
console.log(property , obj[property])
}
}
}
return obj;
}
PS - 我也想将它用于数组
"dirs": [ { "watchDir": "Desktop/logs", "compressAfterDays": 50 }, { "watchDir": "Desktop/alerts", "timeMatchRegex": "(.*)(\\d{4})-(\\d{2})-(\\d{2})-(\\d{2})_(\\d{2})(.*)", }]
我想要的输出就是这样
dirs[0].watchdir="Desktop/alerts"
dirs[1].watchDir="Desktop/logs"
解决方案
在递归调用中传递键:
function iterate(obj, path = []) {
for (let property in obj) {
if (obj.hasOwnProperty(property)) {
if (typeof obj[property] == "object") {
iterate(obj[property], [...path, property]);
} else {
console.log(path, property , obj[property])
}
}
}
}
推荐阅读
- ios - 如何更新 iPad 拆分视图上的窗口框架?
- linux - 无法在 Ubuntu 容器中执行 .run 文件
- javascript - React 过滤大型数据集而不重新渲染(重新渲染过多错误)
- python - Python 相当于 Matlab 的“什么”功能?
- arrays - 重新调整数组后如何将数组写入一系列单元格?
- flutter - Flutter 无法从 master 切换到 dev 通道
- python-3.x - 如何抓取表格及其链接
- bootstrap-4 - 使用 Bootstrap 4,包含“描述列表”的卡片的宽度随着列表项的增加而增加
- python - Python将多个值返回到另一个函数
- javascript - 如何使用文档优化此 java 脚本代码?