In my small app, I have a function returning tree-like data:
function getData() {
return {
"name": "fish",
"children": [{
"name": "mussels & clams",
"children": [{
"name": "fennel",
"size": 1
}, {
"name": "garlic",
"size": 1
}, {
"name": "lemon",
"size": 1
}, {
"name": "onion",
"size": 1
}, {
"name": "parsley",
"size": 1
}, {
"name": "pasta",
"size": 1
}, {
"name": "rice",
"size": 1
}, {
"name": "soup",
"size": 1
}, {
"name": "tomato",
"size": 1
}]
}, {
"name": "octopus",
"children": [{
"name": "bay",
"size": 1
}, {
"name": "chilli",
"size": 1
}, {
"name": "lemon",
"size": 1
}, {
"name": "olive oil",
"size": 1
}, {
"name": "paprika",
"size": 1
}, {
"name": "parsley",
"size": 1
}, {
"name": "pine nuts",
"size": 1
}]
}, {
"name": "oysters",
"children": [{
"name": "asparagus",
"size": 1
}, {
"name": "bacon",
"size": 1
}, {
"name": "butter",
"size": 1
}, {
"name": "cellery",
"size": 1
}, {
"name": "chives",
"size": 1
}, {
"name": "garlic",
"size": 1
}, {
"name": "lemon",
"size": 1
}, {
"name": "mozzarella",
"size": 1
}, {
"name": "onion",
"size": 1
}, {
"name": "pasta",
"size": 1
}, {
"name": "parsley",
"size": 1
}, {
"name": "shallot",
"size": 1
}]
}, {
"name": "pink fish",
"children": [{
"name": "balsamic vinegar",
"size": 1
}, {
"name": "chives",
"size": 1
}, {
"name": "cream",
"size": 1
}, {
"name": "dill",
"size": 1
}, {
"name": "garlic",
"size": 1
}, {
"name": "ham",
"size": 1
}, {
"name": "honey",
"size": 1
}, {
"name": "lemon",
"size": 1
}, {
"name": "lime",
"size": 1
}, {
"name": "mild cheese",
"size": 1
}, {
"name": "miso",
"size": 1
}, {
"name": "potato",
"size": 1
}, {
"name": "sesame",
"size": 1
}, {
"name": "soy souce",
"size": 1
}, {
"name": "spinach",
"size": 1
}, {
"name": "thyme",
"size": 1
}]
}, {
"name": "shrimp",
"children": [{
"name": "coriander",
"size": 1
}, {
"name": "curry",
"size": 1
}, {
"name": "ginger",
"size": 1
}, {
"name": "lemon",
"size": 1
}, {
"name": "lime",
"size": 1
}, {
"name": "lobster",
"size": 1
}, {
"name": "parsley",
"size": 1
}, {
"name": "soft cheese",
"size": 1
}, {
"name": "tomato",
"size": 1
}]
}, {
"name": "smoked fish",
"children": [{
"name": "asparagus",
"size": 1
}, {
"name": "butter",
"size": 1
}, {
"name": "eggs",
"size": 1
}, {
"name": "lemon",
"size": 1
}, {
"name": "mandarin",
"size": 1
}, {
"name": "mild cheese",
"size": 1
}, {
"name": "mushrooms",
"size": 1
}, {
"name": "onion",
"size": 1
}, {
"name": "potato",
"size": 1
}, {
"name": "spring onion",
"size": 1
}]
}, {
"name": "squid",
"children": [{
"name": "bacon",
"size": 1
}, {
"name": "courgette",
"size": 1
}, {
"name": "cumin",
"size": 1
}, {
"name": "garlic",
"size": 1
}, {
"name": "lemon",
"size": 1
}, {
"name": "lime",
"size": 1
}, {
"name": "onion",
"size": 1
}, {
"name": "parsley",
"size": 1
}, {
"name": "peper",
"size": 1
}, {
"name": "rocket",
"size": 1
}, {
"name": "thyme",
"size": 1
}]
}, {
"name": "sushi",
"children": [{
"name": "coriander",
"size": 1
}, {
"name": "couscous",
"size": 1
}, {
"name": "cucumber",
"size": 1
}, {
"name": "ginger",
"size": 1
}, {
"name": "lemon",
"size": 1
}, {
"name": "lime",
"size": 1
}, {
"name": "pepper",
"size": 1
}, {
"name": "rice",
"size": 1
}, {
"name": "sesame",
"size": 1
}, {
"name": "soya souce",
"size": 1
}, {
"name": "spring onion",
"size": 1
}, {
"name": "wasabi",
"size": 1
}]
}, {
"name": "white fish",
"children": [{
"name": "butter",
"size": 1
}, {
"name": "courgette",
"size": 1
}, {
"name": "gream",
"size": 1
}, {
"name": "fennel",
"size": 1
}, {
"name": "french beans",
"size": 1
}, {
"name": "garlic",
"size": 1
}, {
"name": "leak",
"size": 1
}, {
"name": "lemon",
"size": 1
}, {
"name": "lime",
"size": 1
}, {
"name": "mild cheese",
"size": 1
}, {
"name": "onion",
"size": 1
}, {
"name": "parsley",
"size": 1
}, {
"name": "soup",
"size": 1
}, {
"name": "soya souce",
"size": 1
}, {
"name": "tomato",
"size": 1
}]
}, {
"name": "caviar",
"children": [{
"name": "chives",
"size": 1
}, {
"name": "eggs",
"size": 1
}, {
"name": "sour cream",
"size": 1
}, {
"name": "strong cheese",
"size": 1
}]
}, {
"name": "lobster & crab",
"children": [{
"name": "chili",
"size": 1
}, {
"name": "coriander",
"size": 1
}, {
"name": "fennel",
"size": 1
}, {
"name": "ginger",
"size": 1
}, {
"name": "leek",
"size": 1
}, {
"name": "mayonnaise",
"size": 1
}, {
"name": "parsley",
"size": 1
}, {
"name": "pasta",
"size": 1
}, {
"name": "peas",
"size": 1
}, {
"name": "rice",
"size": 1
}, {
"name": "sesame",
"size": 1
}, {
"name": "soy sauce",
"size": 1
}, {
"name": "wasabi",
"size": 1
}]
}]
};}
The data is visualized like this:
Here is jsfiddle.
I would like to create a list of labels on the right hand side of the main diagram, that would contain all values that are found in leaves of the tree, but each one only once. In other words, it should contain:
- "asparagus"
- "bacon"
- "balsamic vinegar"
- and so on
(like a "union" of all leaves)
How do I get that array with unique elements?
(Displaying labels is not a problem for me once I have that array)
Cheers!