考虑一个嵌套对象:
> { a: { b: { c: 3 } } }
{ a: { b: { c: 3 } } }
使用点符号访问内部属性并使用点符号表示固定值:
> x.a.b.c
3
我想根据某些条件访问任意属性,例如,我不想访问b
,而是访问名称存储在SOME_VARIABLE
变量中的属性:
> x.a.{SOME_VARIABLE}.c
3
如何在变量中定义属性名称的情况下动态引用对象属性?
答案 0 :(得分:1)
有多种访问对象的方法,其中一种是[]
而不是点。如果对象是var object = { inside : '1' }
,则可以像这样object['inside']
那样访问它。如果是静态的,请记住在内部传递引号;如果是动态的,请记住将引号传递给
我在下面添加了一个示例
var a = { b: { c: 1 } };
var d = 'b';
console.log(a[d]['c']);
答案 1 :(得分:1)
您还可以考虑使用类似lodash的库,该库提供用于“到达”复杂对象并返回值的功能,如果该路径不存在,则返回默认值。
示例:
const _ = require('lodash')
const target = {
foo: {
bar: {
baz: [1, 2, 3]
}
}
}
console.log(_.get(target, 'foo.bar.baz.1')) // ==> 2
console.log(_.get(target, 'foo.3.bar', 'DEFAULT')) // ==> DEFAULT
if (_.has(target, 'foo.bar')) {
// do something interesting
}
const newKey = 'blorg'
_.put(target, `foo.bar.${newKey}`, 'hello?')
/*
target is now {
foo: {
bar: {
baz: [1, 2, 3]
},
blorg: 'hello?'
}
}
*/