Как добавить элемент из foreach в массив объектов в машинописном тексте?

В моем коде у меня есть фрагмент кода ниже

const accountEnv = 'Prod'
const accPermissionMap = {}
Object.values(Accounts).forEach(account => { const adminRole = ImportableRole.fromRoleArn(this, `${account.account}-Role`, 'arn:aws:iam::' + account.account + ':role/Admin')})

В результате внутри цикла foreach он будет присваивать следующие значения переменной «account» во время выполнения цикла.

ImportableRole.fromRoleArn(this, `Prod-Role`, 'arn:aws:iam::' + Prod + ':role/Admin')
ImportableRole.fromRoleArn(this, `UAT-Role`, 'arn:aws:iam::' + UAT + ':role/Admin')
ImportableRole.fromRoleArn(this, `MT-Role`, 'arn:aws:iam::' + MT + ':role/Admin')
ImportableRole.fromRoleArn(this, `Dev-Role`, 'arn:aws:iam::' + Dev + ':role/Admin')

Я пытаюсь

  1. Добавьте каждую ImportableRole в «accPermissionMap» как объект с ключом.

Итак, после добавления «accPermissionMap» должно быть что-то похожее на

{
Key: Prod,  Value: ImportableRole.fromRoleArn(this, `Prod-Role`, 'arn:aws:iam::' + Prod + ':role/Admin')
Key: UAT,  Value: ImportableRole.fromRoleArn(this, `UAT-Role`, 'arn:aws:iam::' + UAT + ':role/Admin')
Key: MT,  Value: ImportableRole.fromRoleArn(this, `MT-Role`, 'arn:aws:iam::' + MT + ':role/Admin')
Key: Dev,  Value: ImportableRole.fromRoleArn(this, `Dev-Role`, 'arn:aws:iam::' + Dev + ':role/Admin')
}

Может ли кто-нибудь предложить обходной путь?

«Я пытаюсь…». Спасибо за код, но я не вижу в этом коде попытки выполнить какой-либо из двух пунктов, которые вы перечисляете: в цикле нет ни accPermissionMap, ни accountEnv. Что вы пробовали?

trincot 21.05.2023 19:23

Также, пожалуйста, добавьте определение Accounts и fromRoleArn, укажите, что такое this, предоставьте ожидаемое содержание accPermissionMap. Пожалуйста, сосредоточьтесь только на одном вопросе.

trincot 21.05.2023 19:28

что-то вроде? accPermissionMap[account.account] = ImportableRole.fromRoleArn(this, `${account.account}-Role`, 'arn:aws:iam::' + account.account + ':role/Admin')

cmgchess 21.05.2023 19:30

@trincot Вопрос отредактирован в соответствии с вашими предложениями. Да, в цикле я не использовал ни карты, ни имени переменной, потому что не понимаю, как его использовать. Только для этого мне нужен обходной путь.

ShanWave007 21.05.2023 19:51

@cmgchess Спасибо за ответ, но он не работает

ShanWave007 21.05.2023 19:51

Желаемый результат невозможен: объект не может иметь дважды один и тот же ключ. Также убедитесь, что желаемый вывод использует предполагаемый синтаксис. Являются ли Prod, UAT, ... переменными? И повторюсь: пожалуйста, добавьте определение Accounts и fromRoleArn, уточните, что такое this.

trincot 21.05.2023 19:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете добавить каждый объект ImportableRole в accPermissionMap, используя account.account в качестве ключа. Затем переберите ключи accPermissionMap и проверьте, соответствует ли какой-либо из них значению accountEnv. Если совпадение найдено, вы можете выполнить желаемое действие с помощью соответствующего ImportableRole. Кроме того, убедитесь, что у вас есть необходимые операторы импорта и что объект Accounts определен правильно.

const accountEnv = 'Prod';
const accPermissionMap = {};

Object.values(Accounts).forEach(account => {
  const adminRole = ImportableRole.fromRoleArn(this, `${account.account}-Role`, 'arn:aws:iam::' + account.account + ':role/Admin');
  accPermissionMap[account.account] = adminRole; // Add each ImportableRole to accPermissionMap
});

// Check which ImportableRole item is equal to accountEnv
Object.keys(accPermissionMap).forEach(account => {
  if (account === accountEnv) {
    // If it matches, perform the desired action
    const matchedRole = accPermissionMap[account];
    // Do something with the matched role
    console.info(`Found a match for accountEnv (${accountEnv}) with role:`, matchedRole);
    // Perform your desired action with the matched role
  }
});

@Adrian Большое спасибо за вашу помощь. Чтобы получить доступ к учетной записи, я использовал как ${accPermissionMap[account], но решение находится на месте. Спасибо за вас обоих

ShanWave007 21.05.2023 21:04

@ ShanWave007 Я только что внес некоторые косметические изменения в сообщение. Ответ лежит на Анмоле.

Adrian Mole 21.05.2023 21:09

спасибо @AdrianMole и вам :) это мой первый ответ на сообщение. Спасибо за мелкие поправки. Когда я сделаю свой дальнейший вклад, я буду иметь в виду эти идеи.

Anmol Mahajan 22.05.2023 10:39

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