我正在使用一个以非常规方式返回一系列值的库。库不是返回数组,而是返回嵌套的对象,其中包含最终的叶子节点作为值。例如:
red.walk.fast.true
变为{red: {walk: {fast: 'true'}}}
要么climbing.ascending
变为{climbing: 'ascending'}
嵌套对象的格式实际上适合我的用例,但是我需要一种将最终值转换为另一个嵌套对象(具有空值-但这并不重要)而不是值的方法。因此:
[{red: {walk: {fast: 'true'}}}
变为{red: {walk: {fast: {true: null}}}}
该公式需要用于任意深度嵌套的对象。我正在努力获得与Ramda一起使用的递归函数。我认为以下方法会起作用:
const stringPropToObject = R.ifElse(
R.is(String),
R.assoc(R.__, null, {}),
mapAllStringPropsToObjs);
const mapAllStringPropsToObjs = R.map(stringPropToObject)
const updatedObject = mapAllStringPropsToObjs({ a: { b: { c: 'd' } } })
console.log(updatedObject);
mapAllStringPropsToObjs(尝试)以映射对象属性,并将它们传递给stringPropToObject。然后,它查看传入的属性。
这将导致“初始化前无法访问'mapAllStringPropsToObjs'”。我知道为什么现在的声明顺序会出现此错误,但是我看不到如何命令它们来避免它-它们是相互依赖的函数。
任何人都知道我可以使用Ramda或vanilla JS进行转换:{climbing: 'ascending'}
变成{climbing: {ascending: null}}
,{red: {walk: {fast: 'true'}}}
转换为{red: {walk: {fast: {true: null}}}}
或任何其他任意嵌套的值。
谢谢您的任何建议。
我正在使用一个以非常规方式返回一系列值的库。库不是返回数组,而是返回嵌套的对象,其中包含最终的叶子节点作为值。 ...
您可以迭代条目,如果没有对象,则分配一个新的条目。