【发布时间】:2012-11-19 15:20:05
【问题描述】:
我目前正在对转换此对象哈希感到头疼:
"food": {
"healthy": {
"fruits": ['apples', 'bananas', 'oranges'],
"vegetables": ['salad', 'onions']
},
"unhealthy": {
"fastFood": ['burgers', 'chicken', 'pizza']
}
}
到这样的事情:
food:healthy:fruits:apples
food:healthy:fruits:bananas
food:healthy:fruits:oranges
food:healthy:vegetables:salad
food:healthy:vegetables:onions
food:unhealthy:fastFood:burgers
food:unhealthy:fastFood:chicken
food:unhealthy:fastFood:pizza
理论上它实际上只是在跟踪路径和最终结果的同时循环遍历对象。
不幸的是,在我完成所有嵌套之前,我不知道如何循环下去。
var path;
var pointer;
function loop(obj) {
for (var propertyName in obj) {
path = propertyName;
pointer = obj[propertyName];
if (pointer typeof === 'object') {
loop(pointer);
} else {
break;
}
}
};
function parse(object) {
var collection = [];
};
各有两个问题:
- 如果我使用递归编程,它会丢失已解析的属性的状态。
- 如果我不使用它,我将无法解析无穷大。
有没有办法处理这个问题?
问候
【问题讨论】:
-
在递归调用中向前传递状态。
-
@user1689607 你能举个例子吗?当它再次开始重新循环根属性时,它不会崩溃吗?
标签: javascript parsing object for-loop infinite-loop