Node.js:通过变量引用对象的内部属性

时间:2018-09-24 06:08:14

标签: node.js reference

我的问题

考虑一个嵌套对象:

> { a: { b: { c: 3 } } }
{ a: { b: { c: 3 } } }

使用点符号访问内部属性并使用点符号表示固定值:

> x.a.b.c
3

我想根据某些条件访问任意属性,例如,我不想访问b,而是访问名称存储在SOME_VARIABLE变量中的属性:

> x.a.{SOME_VARIABLE}.c
3

我尝试了什么

  • STFW。可能不知道确切的术语。

我的问题

如何在变量中定义属性名称的情况下动态引用对象属性?

2 个答案:

答案 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?'
    }
  }
*/