Задать вопрос
@darktowerk56c

Как оптимизировать трансформацию данных?

Всем привет подскажите, пожалуйста, как оптимизировать следующий код.
Исходные данные:
const dataList = [
    {
        title: 'title1',
        value: 'value1',
        properties: {
            objectOnePropOne: ['1', '2'],
            objectTwoPropTwo: ['3', '4'],
            objectThreePropThree: ['5', '6']
        }
    },
    {
        title: 'title2',
        value: 'value2',
        properties: {
            objectTwoPropOne: ['7', '8'],
            objectTwoPropTwo: ['9', '10']
        }
    }
]

Функция, которую я написал:
const transformProductStatusInfo = (items) => items.map((productStatusInfoList) => {
    const { properties, title, value } = productStatusInfoList
    const transformProperties = Object.keys(properties).map((key) => ({ [key]: properties[key] }))
    const propertiesData = transformProperties.map((i) => ({
        key: Object.keys(i).map((el) => el)[0],
        fieldName: i[Object.keys(i)][0],
        fieldValue: i[Object.keys(i)][1]
    }))
    return { title, value, properties: propertiesData }
})
const data = transformProductStatusInfo(dataList)
console.log('data', data)

Результат, тот, что нужен. Интересно лишь оптимизация, и как можно добиться того же результата, только лучшим способом.
  • Вопрос задан
  • 44 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
У Вас по сути идет Object.keys(properties).map(/* ... */).map(/* ... */) - можно объединить в 1 .map(/* ... */)
.map((el) => el) - такая операция бесполезная трата процессорного времени
Постоянный Object.keys(i) там где вообще можно без него
const transformProductStatusInfo = (items) => items.map(({properties, title, value}) => ({
  title,
  value,
  properties: Object.keys(properties).map(key => ({
    key,
    fieldName: properties[key][0],
    fieldValue: properties[key][1]
  }))
}));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы