JavaScript: методы выравнивания вложенного объекта и объединения родительских ключей

В JavaScript существует несколько методов выравнивания вложенного объекта и объединения родительских ключей. Вот несколько подходов, которые вы можете рассмотреть:

Метод 1: рекурсивная функция
Вы можете использовать рекурсивную функцию для перебора вложенного объекта и объединения родительских ключей. Вот пример:

function flattenObject(obj, prefix = '') {
  let flattened = {};
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      let prefixedKey = prefix ? `${prefix}.${key}` : key;
      if (typeof obj[key] === 'object' && obj[key] !== null) {
        Object.assign(flattened, flattenObject(obj[key], prefixedKey));
      } else {
        flattened[prefixedKey] = obj[key];
      }
    }
  }
  return flattened;
}
// Example usage:
const nestedObject = {
  a: {
    b: {
      c: 1,
      d: 2
    },
    e: 3
  },
  f: 4
};
const flattenedObject = flattenObject(nestedObject);
console.log(flattenedObject);

Метод 2: использование библиотеки.
Другой вариант — использовать такую ​​библиотеку, как Lodash, которая предоставляет метод Flattenдля выравнивания вложенных объектов. Вот пример:

const _ = require('lodash');
const nestedObject = {
  a: {
    b: {
      c: 1,
      d: 2
    },
    e: 3
  },
  f: 4
};
const flattenedObject = _.flattenDepth(nestedObject, Infinity);
console.log(flattenedObject);

Метод 3: ES6 Map и уменьшает
Вы также можете использовать функции ES6 Mapи reduceдля достижения желаемого результата. Вот пример:

function flattenObject(obj) {
  const flatten = (data, prefix = '') =>
    Object.entries(data).reduce((acc, [key, value]) => {
      const prefixedKey = prefix ? `${prefix}.${key}` : key;
      if (typeof value === 'object' && value !== null) {
        return { ...acc, ...flatten(value, prefixedKey) };
      }
      return { ...acc, [prefixedKey]: value };
    }, {});
  return flatten(obj);
}
// Example usage:
const nestedObject = {
  a: {
    b: {
      c: 1,
      d: 2
    },
    e: 3
  },
  f: 4
};
const flattenedObject = flattenObject(nestedObject);
console.log(flattenedObject);

Это всего лишь несколько методов выравнивания вложенного объекта и объединения родительских ключей в JavaScript.