Получение строки из переменной (из импортированной JS) в качестве ключа в объекте - PullRequest
2 голосов
/ 20 апреля 2020

Как сделать переменную ключом для объекта?

Я импортирую константы из определений. js и эти константы мне нужно использовать в качестве ключей:

import * as cons from '../scripts/definitions.js'

export default {
  data () {
    return {
      cons: cons,
      obj: {
        cons.FILENAMEA: {},
        cons.FILENAMEB: {
          children: [
            cons.CHILDFILENAME1,
            cons.CHILDFILENAME2,
            cons.CHILDFILENAME3
          ]
        }
      }
    }
  },

С вышеуказанными кодами я получаю ошибку:

Parsing error: Unexpected token, expected ","

Из-за точки (.) В cons.FILENAMEA. Как это сделать ?? Обратите внимание, что мне нужно получить эти переменные / константы из внешнего файла. Невозможно просто объявить это в одном файле.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 20 апреля 2020

Вы можете использовать es6 вычисленные свойства :

obj: {
  [cons.FILENAMEA]: {},
  [cons.FILENAMEB]: {
    children: [
      cons.CHILDFILENAME1,
      cons.CHILDFILENAME2,
      cons.CHILDFILENAME3
    ]
  }
}

Выражение внутри скобок будет оценено и использовано как имя свойства

1 голос
/ 20 апреля 2020

Альтернативой ответу @ Dan является объявление объекта перед рукой и добавление к нему пар ключ / значение

export default {
  data () {
    const obj = {}
    obj[cons.FILENAMEA] = {}
    obj[cons.FILENAMEB] = {
          children: [
            cons.CHILDFILENAME1,
            cons.CHILDFILENAME2,
            cons.CHILDFILENAME3
          ]
     }
    return {
      cons: cons,
      obj
     }
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...