#ecmascript-6 #object-destructuring
#ecmascript-6 #объект-деструктурирование
Вопрос:
Мне любопытно, возможно ли вернуть деструктурированный объект в той же строке, в которой он был деструктурирован.
Текущие (рабочие) примеры:
использование 2 строк
const itemList = json.map((item) => {
const { id, title } = item;
return { id, title };
});
1 строка, но не разрушена
const itemList = json.map((item) => {
return { id: item.id, title: item.title }; // This also requires repeating the field name twice per instance which feels hacky
});
Можно ли сжать тело до одной строки?
пример (не работает)
const itemList = json.map((item) => {
return { id, title } = item;
}
Ответ №1:
Уничтожьте параметры обратного вызова и верните объект:
const itemList = json.map(({ id, title }) => ({ id, title }))
Комментарии:
1. Работает только в этой конкретной ситуации, с помощью array mapper, но не в том случае, если у вас была «просто» функция и внутри нее часть реструктуризации, как показано в первом примере OP:
() => { const {a,b} = foo; return {a,b}; }