在 js 中为什么如下方式会找不到值?
let a = {
b: {
c: {
d: 1
}
}
}
let z = 'c.d'
console.log(a.b[z]) // undefined
为什么?
如何才能正常找到 ----------------------- 以下是精选回复-----------------------
答:js 本来就不支持这种玩法,可以用第三方的库,lodash 之类的
答:eval ,不过容易 boom
答:哈哈哈哈哈
a={b:{'c.d':1}}; z='c.d'; console.log(a.b[z])能找到
答:要么直接用 lodash ,要么自己参考 lodash 的源码自己实现一个 get 方法。
我倒是好奇有什么编程语言能这样来的?
答:因为 c.d 是一个合法的属性,JS 的对象本质是个 string|symbol-> any 的字典映射。
答:啥语言能这样写,这估计是第三方库的处理吧
答:let a = {
b: {
c: {
d: 1,
},
},
}
let z = 'c.d'
console.log(eval(`a.b.${z}`)) // 1
答:a.b['c']['d'] 能找着
0条评论