Как разделить ключи в объекте на дочерние объекты? Дан объект{ "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 строчными методами добавлять туда новые значения. Но есть ли способ элегантнее?
Да, можно использовать метод 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);
Этот код разделит ключи в объекте на дочерние объекты и приведет его к желаемому виду.