Преобразование тегов в массив тегов

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

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

const tags = [{
  Name: "ServerName"
  tContact: "[email protected]"
  tEnv: "DEV"
  tOwner: "John doe",
  tProject: "Typescript",
}];

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

const tags2 = 
   [
    {
      key: "Name",
      propagateAtLaunch: true,
      value: "ServerName",
    },
    {
      key: "tContact",
      propagateAtLaunch: true,
      value: "[email protected]",
    },
    {
      key: "tEnv",
      propagateAtLaunch: true,
      value: "DEV",
    },
    {
      key: "tOwner",
      propagateAtLaunch: true,
      value: "John Doe",
    },
    {
      key: "tProject",
      propagateAtLaunch: true,
      value: "Typescript",
    }
  ];

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

tags выглядит как массив, содержащий один (или несколько) объектов. Всегда ли он будет содержать только один объект или их может быть больше?
cutmancometh 20.06.2019 01:23
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
0
1
327
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

const tags = [{
  Name: "ServerName",
  tContact: "[email protected]",
  tEnv: "DEV",
  tOwner: "John doe",
  tProject: "Typescript",
},
{
  Name: "ServerName1",
  tContact: "[email protected]",
  tEnv: "DEV1",
  tOwner: "John doe",
  tProject: "Typescript",
}];
//let obj = tags[0];
//console.info(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.info(results);

Спасибо за это! Поскольку у меня 5 тегов, значит ли это, что мне нужно объявить 5 объектов для каждого тега?

mbspark 20.06.2019 01:31

Спасибо! Теперь мне нужно разобраться с набором текста :) Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ tContact: string;....

mbspark 20.06.2019 01:39

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

const tags: any = [{
  Name: "ServerName",
  tContact: "[email protected]",
  tEnv: "DEV",
  tOwner: "John doe",
  tProject: "Typescript",
}

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

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

Другие вопросы по теме