Sobes.tech
Back to questions
Middle
3

Практическая задача: реализовать аналог метода Array.flat(), но для объектов (рекурсивное выравнивание вложенного объекта).

Companies where asked
BI.ZONE

Answer from AI

sobes.tech AI

Для реализации аналога 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 }

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