Создание нового объекта с отбором полей по фильтру

Отберите собственные перечисляемые поля 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, не создаются. Копирование поверхностное: если выбранное значение — массив или объект, новая структура сохраняет ссылку на него. Символьные и неперечисляемые поля этим вариантом не обрабатываются.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее