Skip to content Skip to sidebar Skip to footer

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?"