Правильность конвертирования в новый массив?
подскажите пожалуйста насколько правильна такая практика перебора в новый массив? Задача: Получить данные из базы данных , пройтись и вернуть новый массив из объектов с value и label ( Для рендеринга в React Select )
const categoriesPossible:any[] = []
useEffect(() => {
GetAllCategories.map((tower:any) => {
const newObject:SelectInterface = {
value: "",
label: ""
}
newObject.value = tower.id
newObject.label = tower.name
categoriesPossible.push(newObject)
})
}, [GetAllCategories])
Можно ли данный код по другому более универсально написать?
Ответы (1 шт):
Автор решения: immitsu
→ Ссылка
Метод .map создает новый массив при переборе. Для подобных случаев использовать стоит или .map, или .forEach вместе с .push, как у вас. В общем, как-то так:
const categoriesPossible = GetAllCategories.map(({ id, name }) => ({
value: id,
label: name,
}))
Если не знаком такой способ обозначения свойств объекта - он называется деструктуризация.
Еще рассмотрите возможность записать результат перебора в state-хук. Это поможет избежать повторной операции при ререндере компонента.