Введение
В этом практическом занятии мы изучим функцию JavaScript, которая сглаживает объект, добавляя пути для ключей. Функция использует рекурсию и Object.keys(), комбинированные с Array.prototype.reduce(), чтобы преобразовать каждый лист в узел с сглаженным путём. В конце этого практического занятия вы будете лучше понимать, как манипулировать объектами JavaScript и сглаживать их для более простой обработки данных.
Сглаживание объекта
Чтобы сгладить объект с путями для ключей, следуйте этим шагам:
- Откройте Терминал/SSH и введите
node, чтобы начать практиковаться в написании кода. - Используйте рекурсию для сглаживания объекта.
- Используйте
Object.keys(), комбинированное сArray.prototype.reduce(), чтобы преобразовать каждый лист в узел с сглаженным путём. - Если значение ключа является объектом, вызовите функцию рекурсивно с соответствующим
prefix, чтобы создать путь с использованиемObject.assign(). - В противном случае добавьте соответствующую пару ключ-значение с префиксом в объект-аккумулятор.
- Игнорируйте второй аргумент,
prefix, если вы не хотите, чтобы каждый ключ имел префикс.
Вот пример реализации:
const flattenObject = (obj, prefix = "") =>
Object.keys(obj).reduce((acc, k) => {
const pre = prefix.length ? `${prefix}.` : "";
if (
typeof obj[k] === "object" &&
obj[k] !== null &&
Object.keys(obj[k]).length > 0
) {
Object.assign(acc, flattenObject(obj[k], pre + k));
} else {
acc[pre + k] = obj[k];
}
return acc;
}, {});
Вы можете использовать функцию flattenObject так:
flattenObject({ a: { b: { c: 1 } }, d: 1 }); // { 'a.b.c': 1, d: 1 }
Резюме
Поздравляем! Вы завершили практическое занятие "Сглаживание объекта". Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.