Предположим, у нас есть две разные структуры из двух разных API. У каждого своя схема.
Мы получаем это как возврат из API # 1
[
{
Id: "test1",
Title: "label 1",
Children: [
{
Id: "test2",
Title: "label 2",
Children: [
{
Id: "test3",
Title: "label 3"
}
]
}
]
}
]
Мне нужно преобразовать его в следующую схему:
[
{
value: "test1",
label: "label 1",
children: [
{
value: "test2",
label: "label 2",
children: [
{
value: "test3",
label: "label 3"
}
]
}
]
}
]
До сих пор я придумал этот метод:
const transformItem = ({ Id, Title, Children }) => ({
value: Id,
label: Title,
children: Children ? transformData(Children) : null
});
const transformData = arr => arr.map(item => transformItem(item));
// Process data
const DataForApi2 = transformData(DataFromApi1);
Из проведенного ограниченного бенчмаркинга и из того, что я могу сказать, в V8 (что составляет 95 +% от нашей пользовательской базы) это выглядит достаточно быстро, так как я я не изменяю никакую структуру данных (например, горячие объекты не повреждены и сохраняют производительность) и использую все, что находится в области видимости, чтобы не тратить впустую память. Кажется, имеет линейную сложность и не так уж плохо, если выполняется только один раз для каждого клиента, загружающего приложение (только в первый раз после входа в систему).