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('Фу Бар');