Выбор ответа Middle Разминка: короткие функции обновлено
uniqueBy через Map: кто останется
Вопрос
Что вернёт uniqueBy(items, 'id')?
const uniqueBy = (arr, key) =>
[...new Map(arr.map((x) => [x[key], x])).values()];
const items = [
{ id: 1, v: 'a' },
{ id: 2, v: 'b' },
{ id: 1, v: 'c' },
];
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: [{ id: 1, v: 'c' }, { id: 2, v: 'b' }]. new Map(entries) вызывает set для каждой пары.
Варианты ответа
[{ id: 1, v: 'a' }, { id: 2, v: 'b' }][{ id: 2, v: 'b' }, { id: 1, v: 'c' }][{ id: 1, v: 'c' }, { id: 2, v: 'b' }]правильный ответ[{ id: 1, v: 'a' }, { id: 2, v: 'b' }, { id: 1, v: 'c' }]
Разбор
new Map(entries) вызывает set для каждой пары. Повторный set с существующим ключом заменяет значение, но не меняет позицию ключа: порядок в Map определяется первой вставкой. Поэтому ключ 1 остаётся первым, а значением становится последний объект { id: 1, v: 'c' }. Если нужно оставить первое вхождение, проверяйте has перед записью или фильтруйте через Set уже виденных ключей.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.