Как преобразовать плоский объект в вложенный в JavaScript
Чтобы преобразовать плоский объект в вложенный объект с использованием путей для ключей в JavaScript, следуйте этим шагам:
-
Откройте Терминал/SSH и введите node
, чтобы начать практиковаться в написании кода.
-
Используйте вложенный метод Array.prototype.reduce()
, чтобы преобразовать плоский путь в лист (листовой узел).
-
Используйте String.prototype.split()
, чтобы разбить каждый ключ по разделителю точки, и Array.prototype.reduce()
, чтобы добавить объекты по ключам.
-
Если текущий аккумулятор уже содержит значение по определенному ключу, верните его значение в качестве следующего аккумулятора.
-
В противном случае добавьте соответствующую пару ключ-значение в объект аккумулятора и верните значение в качестве аккумулятора.
Вот код для функции unflattenObject
:
const unflattenObject = (obj) =>
Object.keys(obj).reduce((res, k) => {
k.split(".").reduce(
(acc, e, i, keys) =>
acc[e] ||
(acc[e] = isNaN(Number(keys[i + 1]))
? keys.length - 1 === i
? obj[k]
: {}
: []),
res
);
return res;
}, {});
Вы можете использовать функцию unflattenObject
, чтобы преобразовать плоский объект в вложенный в JavaScript:
unflattenObject({ "a.b.c": 1, d: 1 }); // { a: { b: { c: 1 } }, d: 1 }
unflattenObject({ "a.b": 1, "a.c": 2, d: 3 }); // { a: { b: 1, c: 2 }, d: 3 }
unflattenObject({ "a.b.0": 8, d: 3 }); // { a: { b: [ 8 ] }, d: 3 }