私は現在、このオブジェクトハッシュの変換について頭を悩ませています:
"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 = [];
};
それぞれを実行する 2 つの問題があります。
- 再帰プログラミングを使用すると、既に解析されているプロパティの状態が失われます。
- それを使わないと無限に解析できません。
これを処理する方法はありますか?
よろしく