У меня есть код, который я нашел для присвоения значений тегов ресурсам в 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
и перенаправление, которое мне не хватает.
Вы можете .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 объектов для каждого тега?
Спасибо! Теперь мне нужно разобраться с набором текста :) Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ tContact: string;....
Я узнал, что ЕС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 }));
tags
выглядит как массив, содержащий один (или несколько) объектов. Всегда ли он будет содержать только один объект или их может быть больше?