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 к нужному нам формату и с помощью деструктуризации добавляем отредактированную пару в новый объект.