Javascript Lodash defaultTo递归父检查

Javascript Lodash defaultTo递归父检查,javascript,json,lodash,Javascript,Json,Lodash,我尝试默认一个长JSON对象,如app.data.user.post.id。问题是user不必存在(或任何父级),在这种情况下必须返回-1 当我尝试\uu.defaultTo(app.data.user.post.id,-1)时,我得到了预期的错误“无法从未定义中获取属性'post' 我知道这可以通过检查每一位家长来实现,但我想知道是否有一种更优雅的方法来实现这一点。Lodash函数可以用于解析“路径”,也可以采用默认值: var-app={data:{user:null}};//。邮政编码

我尝试默认一个长JSON对象,如
app.data.user.post.id
。问题是
user
不必存在(或任何父级),在这种情况下必须返回-1

当我尝试
\uu.defaultTo(app.data.user.post.id,-1)
时,我得到了预期的错误“无法从未定义中获取属性'post'

我知道这可以通过检查每一位家长来实现,但我想知道是否有一种更优雅的方法来实现这一点。

Lodash函数可以用于解析“路径”,也可以采用默认值:

var-app={data:{user:null}};//。邮政编码
var res=u2;.get(应用程序'data.user.post.id',-1);
控制台日志(res)
Lodash函数可用于解析“路径”,也可采用默认值:

var-app={data:{user:null}};//。邮政编码
var res=u2;.get(应用程序'data.user.post.id',-1);
控制台日志(res)

app.data.user
未定义的
。是的,@evolutionxbox,可能就是这样。我想知道将未定义的父项默认为-1(或某些静态值)的最佳方法。您可以尝试
(app.data.user |{})。post
@Ryad在这种情况下,我会得到“无法从未定义中获取属性'id',在这种情况下,我必须进行更多的比较,而不仅仅是&&ing所有单个父项(如果用户存在而post不存在)另一个选项:
const value;尝试{value=app.data.user.post.id}catch(e){value=-1}
app.data.user
未定义的
。是的,@evolutionxbox,可能就是这种情况。我想知道将未定义的父项默认为-1(或某个静态值)的最佳方法。您可以尝试
(app.data.user | |{})。post
@Ryad在这种情况下,我会得到“无法从未定义中获取属性'id',在这种情况下,我必须做更多的比较,而不仅仅是对所有单独的父项进行比较(如果用户存在而post不存在)另一个选项:
常量值;尝试{value=app.data.user.post.id}catch(e){value=-1}
它会解析并返回,但不会将
-1
分配给
app.data.user.post.id
@dfsq应该这样做吗?问题似乎并不要求将值写入对象。我不知道,可能不是真的。不知道,这是我一直在寻找的!字符串不是很优雅,但比一根长的字符串要好&&'s.谢谢!@dfsq指定默认值是危险的;尤其是在名为
get
的方法中。要指定值
get
必须构建路径。这意味着构建不完整,因此可能无效
user
post
对象。它解析并返回,但不指定
-1
to
app.data.user.post.id
@dfsq应该这样做吗?这个问题似乎并不要求将值写入对象。我不知道,可能不是真的。不,它不知道,这是我一直在寻找的!字符串不是很优雅,但比一个长的&&更好。谢谢!@dfsq分配默认值是危险的ue;尤其是在名为
get
的方法中。要分配值
get
必须构建路径。这意味着构建不完整,因此可能无效
user
post
对象。