J'ai deux tableauxComment convertir un tableau en arbre?
["a", "b", "c"]
["a", "b", "d"]
Je veux le convertir en
{
a :
{
b :
{
c : null,
d : null
}
}
}
Comment puis-je faire cela?
J'ai deux tableauxComment convertir un tableau en arbre?
["a", "b", "c"]
["a", "b", "d"]
Je veux le convertir en
{
a :
{
b :
{
c : null,
d : null
}
}
}
Comment puis-je faire cela?
var tree = {}
function addToTree(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": {}
}
}
}*/
La seule chose qu'il ne fait pas est de définir les feuilles de l'arbre à null - il les définit à un objet vide. Est-ce correct?
Si vous voulez que les feuilles soient null, utilisez ce qui suit à la place:
function addToTree(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:
function addToTree(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
}
}
}*/
Ne pas oublier d'utiliser 'var':' var i = 0, longueur = array.length' –
@Marcel Korpel: Merci, corrigé. –
utilitaire JSON de YUI pourrait être utile, je n'ai pas mis cela comme une réponse bien, parce que je ne pouvais pas dire vous êtes au départ si cela répond à vos besoins. Ou, pensez-y, consultez l'utilitaire d'extension de YUI, il fusionne les objets que je crois. – danjah
Êtes-vous en train de concevoir un Trie? –