为了账号安全,请及时绑定邮箱和手机立即绑定

js对象的属性名是变量,除了使用eval,还有没有别的方式获取属性值

js对象的属性名是变量,除了使用eval,还有没有别的方式获取属性值

沧海一幻觉 2019-03-07 10:11:55
例如,有一个对象:var china={    beijing:{        chaoyang:{            number:1234        }    }}现有一拼凑出的变量:var key = "beijing.chaoyang.number"所以可以通过eval("china."+key)来获取number。想知道除了eval之外,有没有其他方法实现相同效果。使用slice的方式将字符串分隔成["beijing","chaoyang","number"],然后用china"beijing"["number"]的方法倒可行,但实际情况是层级不是固定的,需要增加多个判断,所以暂不考虑。
查看完整描述

4 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

const getDeepValue = (p, o) => p.reduce((xs, x) => (xs && xs[x]) ? xs[x] : null, o);

var china={

    beijing:{

        chaoyang:{

            number:1234

        }

    }

}

console.log(getDeepValue(['beijing', 'chaoyang', 'number'], china));  //1234


查看完整回答
反对 回复 2019-03-12
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

你可以通过var obj = {};obj[key+'xxxx'] = 'vvvvvvvvvvvv';来调用

查看完整回答
反对 回复 2019-03-12
  • 4 回答
  • 0 关注
  • 887 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信