Что выведет код Middle Современный синтаксис обновлено
Object.groupBy и объект без прототипа
Вопрос
Что выведет код? По строке на каждый вывод.
const users = [
{ n: 'Аня', role: 'admin' },
{ n: 'Оля', role: 'user' },
{ n: 'Катя', role: 'admin' },
];
const groups = Object.groupBy(users, (u) => u.role);
console.log(groups.admin.map((u) => u.n).join(','));
console.log(Object.keys(groups).join(','));
console.log(typeof groups.hasOwnProperty);
const { admin, ...others } = groups;
console.log(Object.keys(others).join(','));
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: Аня,Катя, admin,user, undefined, user. Object.groupBy раскладывает элементы по ключам, которые вернул колбэк, сохраняя порядок: в admin попадают Аня и Катя.
Что выведет
Аня,Катя
admin,user
undefined
user
Разбор
Object.groupBy раскладывает элементы по ключам, которые вернул колбэк, сохраняя порядок: в admin попадают Аня и Катя. Ключи групп идут в порядке первого появления: admin,user. Результат создаётся без прототипа, поэтому унаследованного hasOwnProperty нет: undefined. Rest при деструктуризации собирает оставшиеся собственные ключи: user.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.