javascript - 替代 if..else 来确定要调用哪个文件

标签 javascript

我试图找到最简洁的方法来从由变量确定的给定文件中选择和调用方法。要记住的条件是:

用户将调用数据库,数据库将返回 10 个不同变量之一。

每个变量都会有一个特定的文件。

每个文件内部都有 5 个方法,在不同的文件中都具有相同的名称,但调用不同的 api。

我想过做类似的事情

import tomato = require('./vars/tomato')
import apple = require('./vars/apple')
import pear = require('./vars/pear')

fruit = (SELECT fruit WHERE name = user_input)

fruitInfo = fruit.getNutritionalInfo()

这无论如何都不会按预期工作(尽管我并不感到惊讶)。除了 if..elseswitch 语句之外,是否还有其他方法可以处理此问题。越简洁越好。

TIA

最佳答案

据我了解,您必须根据查询结果动态选择要调用的模块。例如,您可以这样做:

const modules = {
    tomato: require('./vars/tomato'),
    apple: require('./vars/apple'),
    pear: require('./vars/pear'),
};

const fruit = (SELECT fruit WHERE name = user_input);

const fruitInfo = modules[fruit].getNutritionalInfo();

它基本上创建了一个模块映射,然后您使用 fruit 值调用特定模块。

实现此目的的另一种方法是根据 fruit 值简单地动态 require 模块:

const fruit = (SELECT fruit WHERE name = user_input);
const module = require('./vars/' + fruit);
const fruitInfo = module.getNutritionalInfo();

关于javascript - 替代 if..else 来确定要调用哪个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60967785/

相关文章:

javascript - Rails : Applications. js当前正确顺序

javascript - 通过自动化操作调用 Ember.js Controller 函数

javascript - 未捕获的类型错误 : Cannot read property 'match' of undefined when iterating through index

javascript - 使用 JavaScript 访问 CSS 类

javascript - 工作结束后得到一根绳子

javascript - 将值从组件中的mapActions传递到vuex存储

javascript在一段时间后启用禁用的文本框

javascript - 如何使用 dat gui 为 three.js 设置自动旋转切换

javascript - 如何使用FormData?

javascript对象,自引用问题