propertiesToSnakeCase

propertiesToSnakeCase


Ответ:

Первый вариант:

const propertiesToSnakeCaseFirst = (obj) =>
  Object.entries(obj).reduce(
    (acc, [key, value]) => ({
      ...acc,
      [key.replace(/[A-Z]/g, (m) => `_${m.toLowerCase()}`)]: value,
    }),
    {}
  );

Второй вариант:

const propertiesToSnakeCaseSecond = (obj) => {
  const pairs = Object.entries(obj);

  const mapPair = (pair) => {
    const [key, value] = pair;
    const mappedKey = key.replace(/[A-Z]/g, (m) => `_${m.toLowerCase()}`);
    return { [mappedKey]: value };
  };

  return pairs.reduce(
    (mappedObj, pair) => ({ ...mappedObj, ...mapPair(pair) }),
    {}
  );
};

Объяснение:

Используя Object.entries(), получаем массив вида [[key,value]], после чего вызываем на этом массиве функцию Array.reduce(). В каждой паре конвертируем key к нужному нам формату и с помощью деструктуризации добавляем отредактированную пару в новый объект.


Report Page