javascript как вызвать функцию название которой содержится в массиве

У меня есть много команд, на каждую из которых надо вызывать определенную функцию, я хочу содержать их названия в массиве.

const Commands_Array = [['Создать сет','set_function'],['Баланс','Balance_function']];
function Command_processing(command){
    alert(command);
    for (let i = 0; i < Commands_Array.length; i++){
        if (Commands_Array[i][0] == command){
            Commands_Array[i][1]();
        }
    }
}
Если я вызову функцию: Command_processing("Создать сет");

Соответственно в данном случае я хочу вызвать функцию: "set_function", как мне это записать по синтаксису? Commands_Array[i][1]();


Ответы (1 шт):

Автор решения: vsemozhebuty

Удобнее всего в этом случае хранить ваши функции в объекте, а не в массиве. И можно сразу объявить их там, чтобы не добавлять избыточный шаг поиска по имени функции. Два варианта:

const Commands_Object = {
  'Создать сет': function() { alert('set_function'); },
  'Баланс': function() { alert('Balance_function'); },
};

function Command_processing(command, commands) {
    alert(command);
    
    if (commands[command]) commands[command]();
    else alert(`'${command}' not found.`);
}

Command_processing('Создать сет', Commands_Object);
Command_processing('Фу Бар', Commands_Object);

function set_function() { alert('set_function'); }
function Balance_function() { alert('Balance_function'); }

const Commands_Object = {
  'Создать сет': set_function,
  'Баланс': Balance_function,
};

function Command_processing(command) {
    alert(command);
    
    if (Commands_Object[command]) Commands_Object[command]();
    else alert(`'${command}' not found.`);
}

Command_processing('Создать сет');
Command_processing('Фу Бар');

→ Ссылка