Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象的递归路径_Javascript_Lodash - Fatal编程技术网

Javascript 对象的递归路径

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

我正在考虑用lodash变换对象的最佳方法

我想保存树结构,但要像数组或串联字符串一样放置路径

{ 
    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);