Как разделить ключи в объекте на дочерние объекты? Дан объект{
"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
290 +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 Апр 2024 в 23:02
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир