Node.js: ссылка на внутреннее свойство объекта с помощью переменной - PullRequest
0 голосов
/ 24 сентября 2018

Моя проблема

Рассмотрим вложенный объект:

> { 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 голосов
/ 25 сентября 2018

Вы можете также рассмотреть возможность использования библиотеки, подобной 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?'
    }
  }
*/
0 голосов
/ 24 сентября 2018

Есть несколько способов получить доступ к объекту, один из которых - [] вместо точек, если объект - var object = { inside : '1' }, вы можете получить к нему доступ вот так object['inside'].Не забудьте передавать кавычки внутри, если он статический и если он динамический, передайте переменную

Я добавил пример ниже

var a = { b: { c: 1 } };

var d = 'b';

console.log(a[d]['c']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...