Javascript if..else的替代选项,用于确定调用哪个文件

Javascript if..else的替代选项,用于确定调用哪个文件,javascript,Javascript,我试图找到一种最干净的方法,从一个由变量决定的给定文件中选择并调用一个方法。要记住的条件是: 用户将调用db,db将返回10个不同变量中的一个 每个变量都有一个特定的文件 每个文件内部都有5个方法,在不同的文件中都命名相同,但调用不同的api 我想做一些类似的事情 import tomato = require('./vars/tomato') import apple = require('./vars/apple') import pear = require('./vars/pear')

我试图找到一种最干净的方法,从一个由变量决定的给定文件中选择并调用一个方法。要记住的条件是:

用户将调用db,db将返回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..else
或一个
switch
语句之外,是否还有其他方法来处理此问题。越简洁越好


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
值调用一个特定的模块

实现这一点的另一种方法是根据
结果
值动态地
要求
模块:

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

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

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
值调用一个特定的模块

实现这一点的另一种方法是根据
结果
值动态地
要求
模块:

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