例如我最终要获取的值为a.b.c.d.e
,在数据结构固定的情况下:
- 除了逐级的进行判断,
a && a.b && a.b.c && a.b.c.d
之外,有没有比较优雅的写法? - 如果其中的某一级为数组,例如我需要
a && a.b && a.b.c && a.b.c[0]
这种情况
例如我最终要获取的值为a.b.c.d.e
,在数据结构固定的情况下:
a && a.b && a.b.c && a.b.c.d
之外,有没有比较优雅的写法?a && a.b && a.b.c && a.b.c[0]
这种情况技术上,如果代码中多次出现以下代码,尝试用一个 function 代替。
a && a.b && a.b.c && a.b.c.d
如果没兴趣自己写,那推荐使用 lodash 的 get 函数,https://lodash.com/docs#get。
用 es6 的解构赋值
const a = { b: { c: [0] } }
var { b: { c: [d] = [] } = '' } = a // d=0
var { b: { c: [d] = [] } = '' } = {} // d=undefined
在最新的标准中支持可选链操作符和空值合并运算符,可以用如下方式
const a = { b: { c: null } }
const d = a?.b?.c?.[0] ?? 0
console.log(d) // 输出 0
就是最后的?.[0]
看起来有点奇怪
var obj = {
a:{
b:{
c:{
d:{
e:123
}
}
}
}
}
function getValue(obj){
var value;
for(var x in obj){
if(obj[x]){
value = getValue(obj[x])
}else{
value = obj[x];
}
}
return value;
}
这样?
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
js对象如何优雅的取一个深度的值? 可以参考下