У меня есть структура вложенных объектов, и я выполняю серию операций над каждым объектом, а затем я нажимаю его на массив. Мой текущий код выглядит так:Оптимизация перемещения вложенных объектов
var item;
var final_data = [];
function walk (items, level) {
for (var i = 0; i < items.length; i++) {
item = items[i];
var final_item = Object.assign({}, item); // <-- required step, object's proper key/values must be cloned, but not recursively.
delete final_item.children; // final_item shouldn't have children
final_item.foo = level;
final_data.push(final_item);
if ("children" in item) walk(item.children, level + 1);
}
}
walk(my_data, 0);
Мой текущий код работает должным образом, как и в случае, он выравнивает входные данные.
Мой вопрос в том, есть ли способ улучшить этот код (качество работы).
Edit:
my_data
представляет собой массив вложенных объектов, например:
my_data = [
{a: 1, b: 2},
{a: 3, b: 8},
{a: 9, b: 3, children: [
{...}, {...}, {...}
]},
{...},
{..., children: [{}, {}, {}...]}
];
Вы испытываете проблемы масштабирования или вы просто пытаетесь будущим доказательство его? –
@mederomuraliev Ни один из них на самом деле. Я просто пытаюсь сжать всю производительность, которую я могу получить, поскольку эта кодировка довольно дорога. – alexandernst
Удалить рекурсию всегда является первым шагом для улучшения – VinhNT