使用点符号字符串访问对象子属性我暂时陷入了一个看似非常简单的JavaScript问题,但也许我只是错过了正确的搜索关键字!假设我们有一个对象var r = { a:1, b: {b1:11, b2: 99}};访问99的方法有几种:r.b.b2
r['b']['b2']我想要的是能够定义一个字符串var s = "b.b2";然后使用r.s or r[s] //(which of course won't work)一种方法是为它编写一个函数,将字符串拆分到点上,并可能递归地/迭代地获得该属性。但有没有更简单/更有效的方法?这里的jQueryAPI中有什么有用的吗?
3 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
function getDescendantProp(obj, desc) { var arr = desc.split("."); while(arr.length && (obj = obj[arr.shift()])); return obj;}console.log(getDescendantProp(r, "b.b2"));//-> 99
getDescendantProp({ a: [ 1, 2, 3 ] }, 'a.2');//-> 3
蓝山帝景
TA贡献1843条经验 获得超7个赞
获得
var object = { 'a': [{ 'b': { 'c': 3 } }] };_.get(object, 'a[0].b.c');// → 3
设置
var object = { 'a': [{ 'b': { 'c': 3 } }] };_.set(object, 'a[0].b.c', 4);console.log(object.a[0].b.c);// → 4
添加回答
举报
0/150
提交
取消