Развёртывание объекта JavaScript с использованием рекурсии

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом практическом занятии мы изучим функцию JavaScript, которая сглаживает объект, добавляя пути для ключей. Функция использует рекурсию и Object.keys(), комбинированные с Array.prototype.reduce(), чтобы преобразовать каждый лист в узел с сглаженным путём. В конце этого практического занятия вы будете лучше понимать, как манипулировать объектами JavaScript и сглаживать их для более простой обработки данных.

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 100%. Он получил 100% положительных отзывов от учащихся.

Сглаживание объекта

Чтобы сгладить объект с путями для ключей, следуйте этим шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковаться в написании кода.
  2. Используйте рекурсию для сглаживания объекта.
  3. Используйте Object.keys(), комбинированное с Array.prototype.reduce(), чтобы преобразовать каждый лист в узел с сглаженным путём.
  4. Если значение ключа является объектом, вызовите функцию рекурсивно с соответствующим prefix, чтобы создать путь с использованием Object.assign().
  5. В противном случае добавьте соответствующую пару ключ-значение с префиксом в объект-аккумулятор.
  6. Игнорируйте второй аргумент, prefix, если вы не хотите, чтобы каждый ключ имел префикс.

Вот пример реализации:

const flattenObject = (obj, prefix = "") =>
  Object.keys(obj).reduce((acc, k) => {
    const pre = prefix.length ? `${prefix}.` : "";
    if (
      typeof obj[k] === "object" &&
      obj[k] !== null &&
      Object.keys(obj[k]).length > 0
    ) {
      Object.assign(acc, flattenObject(obj[k], pre + k));
    } else {
      acc[pre + k] = obj[k];
    }
    return acc;
  }, {});

Вы можете использовать функцию flattenObject так:

flattenObject({ a: { b: { c: 1 } }, d: 1 }); // { 'a.b.c': 1, d: 1 }

Резюме

Поздравляем! Вы завершили практическое занятие "Сглаживание объекта". Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.