ES6/Next: разрушение объекта с остальными - группировка
У меня есть:
const props = {
gallery: [],
select: () => null,
one: 1,
two: 2,
}
Я могу разрушить его с помощью
const {gallery, select, ...other} = props
Теперь у меня будут три переменные:
- галерея=
[]
- выберите=
() => null
- other=
{one: 1,two: 2}
Можно ли дестабилизировать заданную группировку?
Что-то вроде этого (это не сработает, но я надеюсь, что ясно, что я пытаюсь сделать):
const {{gallery, select}: specific, ...other} = props
Итак, у меня будет две переменные:
- =
{gallery: [], select: () => null}
- other=
{one: 1,two: 2}
Я мог бы решить это на более высоком уровне и построить реквизиты таким образом:
const props = {
specific: {
gallery: [],
select: () => null,
},
other: {
one: 1,
two: 2,
}
}
Но мне просто интересно, возможно ли это с деструктурированием.
Ответы
Ответ 1
Как насчет этого? others
содержит также данные specific
, и я должен сначала получить доступ к props
(возможно, это может быть улучшено), но я думаю, что он в основном группируется во время деструктурирования. Он работает, потому что вы можете назначить значение по умолчанию, если атрибут не существует:
const props = {
gallery: [],
select: () => null,
one: 1,
two: 2,
}
const {gallery : gal, select : sel} = props;
const {specific: specific={gallery: gal, select: sel}, ...others} = props;
console.log(specific);
console.log(others);
Ответ 2
Синтаксис растяжки (и читаемости) до предела можно сделать следующим образом:
(пояснение к коду в комментариях)
const props = {
gallery: [],
select: () => null,
one: 1,
two: 2,
}
/** destructuring assignment **/
const {
gallery, //extract the gallery prop
select, //extract the select prop
specific: specific={gallery, select},
// create `specific` setting gallery and select props through default value assignment
...others // assign to others the rest of non extracted props properties
} = props;
console.log(specific);
console.log(others);