How To Convert Array To Tree?
I have two arrays ['a', 'b', 'c'] ['a', 'b', 'd'] I want to convert it to { a : { b : { c : null, d : null } } } How c
Solution 1:
var tree = {}
functionaddToTree(tree, array) {
for (var i = 0, length = array.length; i < length; i++) {
tree = tree[array[i]] = tree[array[i]] || {}
}
}
addToTree(tree, ["a", "b", "c"])
addToTree(tree, ["a", "b", "d"])
/*{
"a": {
"b": {
"c": {},
"d": {}
}
}
}*/Only thing it doesn't do is set the leaves of the tree to null -- it sets them to an empty object. Is that ok?
If you want the leaves to be null, then use the following instead:
functionaddToTree(tree, array) {
for (var i = 0, length = array.length; i < length; i++) {
tree = tree[array[i]] = ((i == length - 1) ? null : tree[array[i]] || {})
}
}
// or, without the i == length - 1 check in each iteration:functionaddToTree(tree, array) {
for (var i = 0, length = array.length; i < length -1; i++) {
tree = tree[array[i]] = tree[array[i]] || {};
}
tree[array[i]] = null;
}
/*{
"a": {
"b": {
"c": null,
"d": null
}
}
}*/
Post a Comment for "How To Convert Array To Tree?"