Pour le tableau suivant des objetsmeilleure solution pour Unflattening tableau d'objets
[
{"Corp": "ABC", "T1": "HW A/V", "T2": "A/V System","T3": "Audio","Prod": "Audio System","Mfr": "One"},
{"Corp": "ABC", "T1": "HW A/V", "T2": "A/V System","T3": "Audio","Prod": "Audio System","Mfr": "Two"},
{"Corp": "ABC", "T1": "HW A/V", "T2": "A/V System","T3": "Video","Prod": "Video System","Mfr": "Other"}
]
Je souhaite obtenir un objet Redresser comme celui ci-dessous:
[{
"Corp": "ABC",
"List": [{
"T1": "HW A/V",
"List": [{
"T2": "A/V System",
"List": [{
"T3": "Audio",
"List": [{
"Prod": "Audio System",
"List": [
{"Mfr": "One"},
{"Mfr": "Two"}
]
}]
},
{
"T3": "Video",
"List": [{
"Prod": "Video System",
"List": [
{"Mfr": "Other"}
]
}]
}]
}]
}]
}] Je l'ai fait obtenir le résultat J'ai l'intention d'obtenir comme décrit ci-dessus. J'ai utilisé le trait de soulignement pour obtenir le résultat. À la suite de l'extrait de code a fait le travail pour moi:
var items = _.map(_.groupBy(itemList, 'Corp'), function (a) {
return _.extend(_.pick(a[0], 'Corp'), {
List: _.map(_.groupBy(a, 'T1'), function (b) {
return _.extend(_.pick(b[0], 'T1'), {
List: _.map(_.groupBy(b, 'T2'), function (c) {
return _.extend(_.pick(c[0], 'T2'), {
List: _.map(_.groupBy(c, 'T3'), function (d) {
return _.extend(_.pick(d[0], 'T3'), {
List: _.map(_.groupBy(d, 'Prod'), function (e) {
return _.extend(_.pick(e[0], 'Prod'), {
List: _.map(e, function (elem) {
return _.pick(elem, 'Mfr')
})
});
})
});
})
});
})
});
})
});
});
maintenant Tout ce que je cherche, est si quelqu'un peut améliorer ma solution. Je veux optimiser à la fois l'espace et le temps pour ce processus.
PS: matin, j'avais posé une question similaire demandant à la solution, et cette question a été marquée commeTOO BROAD et a été mis sur MAINTIEN, donc j'ai ajouté ma solution à cette question , maintenant tout ce que je cherche est une meilleure solution.
Merci
[Il n'y a pas une telle chose comme un "objet JSON"] (http://benalman.com/news/2010/03/theres-no-such-thing-as-a -json /) – Andreas
La revue de code pourrait être un meilleur endroit pour poser cette question puisqu'il n'y a pas un problème réel, que vous voulez améliorer le code fonctionnant déjà. – akinuri
@JLRishe oh ... Mon mauvais ... c'est parce que j'ai copié une partie de la question de ma question précédente. – Nitin