Добавить свойство в конец ассоциативного массива
Помогите Пожалуйста
Есть код: var channels = ['channel1', 'channel2', 'channel3', 'channel4']; var commands = ["hello", "goodbye", "send", "countdown", "backcountdown"]; var cooldown = {}; for(i of commands) { cooldown[`${i}`] = { ready: true, cooldown: {} } }; console.log(cooldown); Он выводит: { hello: { ready: true, cooldown: {} }, goodbye: { ready: true, cooldown: {} }, send: { ready: true, cooldown: {} }, countdown: { ready: true, cooldown: {} }, backcountdown: { ready: true, cooldown: {} } } Я хочу сделать так, чтобы в cooldown.(команды от hello до backcountdown).cooldown было { 'channel1': true, 'channel2': true, 'channel3': true, 'channel4': true } То есть чтобы: cooldown = { hello: { ready: true, cooldown: {'channel1': true, 'channel2': true, 'channel3': true, 'channel4': true} }, goodbye: { ready: true, cooldown: {'channel1': true, 'channel2': true, 'channel3': true, 'channel4': true} }, send: { ready: true, cooldown: {'channel1': true, 'channel2': true, 'channel3': true, 'channel4': true} }, countdown: { ready: true, cooldown: {'channel1': true, 'channel2': true, 'channel3': true, 'channel4': true} }, backcountdown: { ready: true, cooldown: {'channel1': true, 'channel2': true, 'channel3': true, 'channel4': true} } } Но я не должен каждый раз переписывать cooldown.(команды от hello до backcountdown).cooldown а коде, а он должен сам дописывать 'channeln': true столько сколько у меня каналов в массиве channels |
Ну так надо заполнять в цикле значение свойства cooldown значениями channels. Но это должен быть объект, а не массив, почему его сразу и не прописан должным образом. Делать это скриптом вроде бы и смысла не имеет в данном случае:
var channels = Object.fromEntries(['channel1', 'channel2', 'channel3', 'channel4'].map((e)=> [e, true])); |
Большое Спасибо.
Я просто с JS начал самостоятельно учить и не знал этого. И еще раз Большое Спасибо! |
Цитата:
var channels = {channel1: true, channel2: true, channel3: true, channel4: true}, //уже готовый объект commands = ["hello", "goodbye", "send", "countdown", "backcountdown"], cooldown = {}; for(i of commands) { cooldown[i] = { ready: true, cooldown: channels //добавляем описанный объект свойству } } console.log(cooldown) И в данном случае `${i}` лишнее, кроме бесполезной нагрузки на парсер ничего не несет полезного. |
Bromin,
<script> var channels = ['channel1', 'channel2', 'channel3', 'channel4']; var commands = ["hello", "goodbye", "send", "countdown", "backcountdown"]; var ready = true; var f = a => [a, ready]; var com = channels.map(f); var cooldown = Object.fromEntries(com); cooldown = Object.fromEntries(commands.map(c => [c ,{ready, cooldown}])); document.write(JSON.stringify(cooldown, "", 4)); </script> |
Цитата:
cooldown: {...channels} |
Цитата:
|
Часовой пояс GMT +3, время: 03:17. |