Отберите собственные перечисляемые поля src, для которых собственное поле mask строго равно true. Из выбранных пар создайте новый объект, не меняя исходники.
Создание нового объекта с отбором полей по фильтру
Отберите собственные перечисляемые поля src, для которых собственное поле mask строго равно true. Из выбранных пар создайте новый объект, не меняя исходники.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Функция create, которая:
- Принимает два объекта:
src— исходные данные иmask— объект‑фильтр; - Возвращает новый объект
result, включающий только те свойства изsrc, для которых вmaskуказано значениеtrue.
const a = { fi: 1, k: 2, j: 5, o: 8, d: [3, 4, 5] };
const b = { fi: true, k: false, j: true };
const c = create(a, b); // Должно вернуть { fi: 1, j: 5 }
Ответ
Отберите собственные перечисляемые поля src, для которых собственное поле mask строго равно true. Из выбранных пар создайте новый объект, не меняя исходники.
function create(src, mask) {
return Object.fromEntries(
Object.entries(src).filter(([key]) => Object.hasOwn(mask, key) && mask[key] === true)
);
}
Для примера вернётся { fi: 1, j: 5 }. Значения 1 или непустая строка в маске не считаются true. Ключи, которых нет в src, не создаются. Копирование поверхностное: если выбранное значение — массив или объект, новая структура сохраняет ссылку на него. Символьные и неперечисляемые поля этим вариантом не обрабатываются.