Javascript 对象的递归路径
我正在考虑用lodash变换对象的最佳方法 我想保存树结构,但要像数组或串联字符串一样放置路径Javascript 对象的递归路径,javascript,lodash,Javascript,Lodash,我正在考虑用lodash变换对象的最佳方法 我想保存树结构,但要像数组或串联字符串一样放置路径 { a: 1, b: { a: 1, b: { q: 1, g: 1 }, c: 1 }, e: 1 } 到 我有这个版本: const deeply = (map) => (obj, fn) => map(_.mapVal
{
a: 1,
b: {
a: 1,
b: {
q: 1,
g: 1
},
c: 1
},
e: 1
}
到
我有这个版本:
const deeply = (map) => (obj, fn) =>
map(_.mapValues(obj, (v) => {
return _.isPlainObject(v) ? deeply(map)(v, fn) : v;
}), fn);
有什么想法吗?不确定洛达斯是否在这里内置了任何东西 但是每当你看到这样的结构,你就会想开始考虑递归 下面是一个不使用
lodash
的示例
const data={
答:1,,
b:{
答:1,,
b:{
问:1,,
g:1
},
c:1
},
e:1
};
函数转换(src,arr=[]){
常量ret={};
Object.entries(src.forEach)([k,value])=>{
常数路径=arr.concat(k);
如果(值的类型==“对象”){
ret[k]=变换(值、路径);
}否则{
返回ret[k]={path,value};
}
});
返回ret;
}
常数t=变换(数据);
控制台日志(t)代码>请显示您已尝试的内容。Stackoverflow不是免费的代码编写服务。这里的目标是让人们帮助您解决问题code@charlietfl我的代码添加了,但我认为最好的方法是正确的
const deeply = (map) => (obj, fn) =>
map(_.mapValues(obj, (v) => {
return _.isPlainObject(v) ? deeply(map)(v, fn) : v;
}), fn);