Sobes.tech
Middle

Exercice pratique : implémenter un équivalent de la méthode Array.flat(), mais pour les objets (aplatissement récursif d'un objet imbriqué).

sobes.tech IA

Réponse de l'IA

Для реализации аналога Array.flat(), но для объектов, нужно рекурсивно пройти по всем вложенным объектам и "вытянуть" их свойства в один плоский объект с ключами, отражающими путь к значению.

Пример на JavaScript:

function flattenObject(obj, prefix = '') {
  let result = {};
  for (const [key, value] of Object.entries(obj)) {
    const newKey = prefix ? `${prefix}.${key}` : key;
    if (value && typeof value === 'object' && !Array.isArray(value)) {
      Object.assign(result, flattenObject(value, newKey));
    } else {
      result[newKey] = value;
    }
  }
  return result;
}

// Пример использования:
const nested = {
  a: 1,
  b: {
    c: 2,
    d: {
      e: 3
    }
  }
};

console.log(flattenObject(nested));
// Вывод:
// { 'a': 1, 'b.c': 2, 'b.d.e': 3 }

Такой подход позволяет получить плоский объект с ключами, отражающими структуру вложенности через точку.