Для следующего массива объектовЛучшее решение для Unflattening массив объектов
[
{"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"}
]
Я намерен получить unflatten объект, как показано ниже:
[{
"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"}
]
}]
}]
}]
}]
}] я сделал получить результат Я намерен получить, как описано выше. Я использовал знак подчеркивания, чтобы получить результат. Следующий фрагмент кода сделал работу для меня:
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')
})
});
})
});
})
});
})
});
})
});
});
Теперь Так Все, что я ищу, если кто-то может улучшить мое решение. Я хочу оптимизировать пространство и время для этого процесса.
PS: утром, я задал аналогичный вопрос с просьбой к решению, и этот вопрос был отмечен какслишком широка и был поставлен на ДЕРЖАТЬ, поэтому я добавил мое решение с этим вопросом , теперь все, что я ищу, - лучшее решение.
Благодаря
[Там нет такого понятия, как "JSON объект"] (http://benalman.com/news/2010/03/theres-no-such-thing-as-a -json /) – Andreas
Обзор кода может быть лучшим местом, чтобы задать этот вопрос, так как нет реальной проблемы, что вы хотите улучшить уже рабочий код. – akinuri
@JLRishe oh ... My bad ... thats, потому что я скопировал некоторую часть вопроса из моего более раннего вопроса. – Nitin