我有一个对象,我想将“树”的每个“分支”作为一个数组。 (请随意更正我的术语!)我所拥有的内容如下:
var features = {
"f": {
"t": "100",
"f": {
"i": ['150'],
"b": ['300'],
"f": {
"k": 100
}
},
"l": ['255']
},
"c": {
"s": {
"t": ["100"]
},
"t": "100"
}
};
我想将它解析为以下结果,所以我可以再次迭代它并将其传递给另一个函数。
var result = [
"ffi",
"fffk",
"fl",
"ct"
]
到目前为止我所拥有的is on JS Bin here。任何帮助或指示正确的方向将不胜感激!谢谢!
答案 0 :(得分:1)
您可以尝试我的un-flatten-tree npm模块将树转换为分支列表。另请注意,lodash中的“map”用于对象遍历。
function walk(tree) {
return _.map(tree, function (v, k) {
return {
name: k,
items: (typeof v !== 'object' || v instanceof Array) ? [] : walk(v)
};
});
}
function getChildNodes(node) {
return node.items.map(function (item) {
return {
name: node.name + item.name,
items: item.items
};
});
}
var result = uft.flatten(walk(features), getChildNodes)
.filter(function (node) { return node.items.length === 0; })
.map(function (node) { return node.name; });
直播示例: