Преобразование тегов в массив тегов - PullRequest
0 голосов
/ 20 июня 2019

У меня есть код, который я нашел для назначения значений тегов ресурсам в AWS через машинопись. Проблема в том, что один из ресурсов (группы автоматического масштабирования) обрабатывает теги иначе, чем все другие ресурсы. Вместо того, чтобы определять все значения моего тега дважды, я пытаюсь найти программный способ сделать это.

Вот моя текущая переменная тега:

const tags = [{
  Name: "ServerName"
  tContact: "john@doe.com"
  tEnv: "DEV"
  tOwner: "John doe",
  tProject: "Typescript",
}];

Если бы я создавал второе вручную для другого типа тега, это было бы:

const tags2 = 
   [
    {
      key: "Name",
      propagateAtLaunch: true,
      value: "ServerName",
    },
    {
      key: "tContact",
      propagateAtLaunch: true,
      value: "john@doe.com",
    },
    {
      key: "tEnv",
      propagateAtLaunch: true,
      value: "DEV",
    },
    {
      key: "tOwner",
      propagateAtLaunch: true,
      value: "John Doe",
    },
    {
      key: "tProject",
      propagateAtLaunch: true,
      value: "Typescript",
    }
  ];

Я новичок в машинописи, но уверен, что для этого есть даже один лайнер. Я думал о цикле for и строках, но я уверен, что есть какой-то apply и редирект, который мне не хватает.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Я узнал, что ES2017 не нравится печатать.Поэтому мне пришлось изменить теги, чтобы они были типа any.

const tags: any = [{
  Name: "ServerName",
  tContact: "john@doe.com",
  tEnv: "DEV",
  tOwner: "John doe",
  tProject: "Typescript",
}

Затем я использовал код из вашего первого представления:

let result = Object.entries(tags[0]).map(([key, value]) => 
  ({ key: key, value: tags[0][key], propagateAtLaunch: true }));
0 голосов
/ 20 июня 2019

Вы можете .map записи объекта Object.entries вот так

Object.entries(tags[0]).map(([key, value]) => (
      {
        key: key, 
        value: tags[0][key], 
        propagateAtLaunch: true
      }));

const tags = [{
  Name: "ServerName",
  tContact: "john@doe.com",
  tEnv: "DEV",
  tOwner: "John doe",
  tProject: "Typescript",
},
{
  Name: "ServerName1",
  tContact: "john@doe.com",
  tEnv: "DEV1",
  tOwner: "John doe",
  tProject: "Typescript",
}];
//let obj = tags[0];
//console.log(obj)
let results = [];
let result = tags.forEach(c=> results.push(Object.entries(c).map(([key, value]) => ({key: key, value: tags[0][key], propagateAtLaunch: true}))));
console.log(results);
...