如何在JavaScript中转换此对象:
let object = { a: { b: 12 c: { d: 13 } } }
变成这样:
let object = {"a.b": 12, "a.c.d": 13}
我想修改对象,并在updateOne方法中使用它,就像mongodb中的$set参数一样
oxiaedzo1#
使用Object.entries来迭代每个使用flatMap的[key,value]对,并递归地到达对象树的叶子,建立到p数组中每个叶子的路径。找到叶子节点后,使用join将路径数组转换为点路径字符串。flatMap用于确保返回[key,value]对的平面数组,而不是嵌套数组。最后,我们使用Object.fromEntries将对列表转换为数组。
Object.entries
flatMap
p
join
Object.fromEntries
let data = { a: { b: 12, c: { d: 13 } }, e: { f: { g: 6 } } } const f = (v, p=[]) => typeof v === 'object' ? Object.entries(v).flatMap(([k, v]) => f(v, [...p, k])) : [[p.join('.'), v]] console.log(Object.fromEntries(f(data)))
1条答案
按热度按时间oxiaedzo1#
使用
Object.entries
来迭代每个使用flatMap
的[key,value]对,并递归地到达对象树的叶子,建立到p
数组中每个叶子的路径。找到叶子节点后,使用join
将路径数组转换为点路径字符串。flatMap
用于确保返回[key,value]对的平面数组,而不是嵌套数组。最后,我们使用Object.fromEntries
将对列表转换为数组。