Как разделить ключи в объекте на дочерние объекты? Дан объект{
"hero.a": "1",
"hero.b": "1",
"hero.c": "",
"hero.d": "",
"tools.a": "0",
"tools.b": "0",
"tools.c": "0",
}
Нужно привести его к виду{
hero {
a: 1,
b:1,
c: '',
d:''
},
tools{
a: 0,
b: 0,
c: 0
}
}
Единственная мысль приходит это пересоздавать объект и через Object.keys строчными методами добавлять туда новые значения. Но есть ли способ элегантнее?

7 Окт 2020 в 19:47
250 +1
0
Ответы
1

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

const obj = {
"hero.a": "1",
"hero.b": "1",
"hero.c": "",
"hero.d": "",
"tools.a": "0",
"tools.b": "0",
"tools.c": "0",
};
const result = Object.entries(obj).reduce((acc, [key, value]) => {
const [parentKey, childKey] = key.split('.');
if (!acc[parentKey]) {
acc[parentKey] = {};
}
acc[parentKey][childKey] = value;
return acc;
}, {});
console.log(result);

Этот код разделит ключи в объекте на дочерние объекты и приведет его к желаемому виду.

17 Апр в 23:02
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир