如何在对象中使用if-else语句?代码转对象结构及替代方案咨询
问题解答
一、在对象中使用if-else的方式
有两种常见方式,可根据分支复杂度选择:
1. 初始化时用三元表达式(适合简单分支)
直接在对象属性值中嵌入三元判断,一行完成赋值:
const env = process.env.ENV || "1"; const config = { nodID: env === '1' ? 'aaaaaaa-f517-4859-91ff-bbbbbbbbb' : env === '2' ? 'cacacaca-7c96-441d-a3af-hththt' : 'mlmlmlml-7c96-441d-a3af-frfrrfrrf', xID: env === '1' ? 'cccccc-f517-4859-91ff-nnnnnnnn' : undefined };
2. 先创建空对象,再通过if-else赋值(适合复杂分支)
先定义空对象,再根据条件逐个给属性赋值,逻辑更清晰:
const env = process.env.ENV || "1"; const config = {}; if (env === '1') { config.nodID = 'aaaaaaa-f517-4859-91ff-bbbbbbbbb'; config.xID = 'cccccc-f517-4859-91ff-nnnnnnnn'; } else if (env === '2') { config.nodID = 'cacacaca-7c96-441d-a3af-hththt'; } else { config.nodID = 'mlmlmlml-7c96-441d-a3af-frfrrfrrf'; }
二、将现有代码转换为可导出的对象结构
先统一代码中nodID和nodeID的拼写(这里统一为nodID),然后通过export导出对象,方便其他文件导入:
方法1:基于if-else的导出结构
// config.js const env = process.env.ENV || "1"; export const testConfig = {}; if (env === '1') { testConfig.nodID = 'aaaaaaa-f517-4859-91ff-bbbbbbbbb'; testConfig.xID = 'cccccc-f517-4859-91ff-nnnnnnnn'; } else if (env === '2') { testConfig.nodID = 'cacacaca-7c96-441d-a3af-hththt'; } else { testConfig.nodID = 'mlmlmlml-7c96-441d-a3af-frfrrfrrf'; }
其他文件导入使用:
// 目标文件 import { testConfig } from './config.js'; console.log(testConfig.nodID); // 输出对应环境的nodID console.log(testConfig.xID); // 仅环境'1'有值,其他为undefined
方法2:用映射对象简化(推荐)
把不同环境的配置预先存入一个映射对象,直接通过环境变量取值,比if-else更易维护:
// config.js const env = process.env.ENV || "1"; const envConfigs = { '1': { nodID: 'aaaaaaa-f517-4859-91ff-bbbbbbbbb', xID: 'cccccc-f517-4859-91ff-nnnnnnnn' }, '2': { nodID: 'cacacaca-7c96-441d-a3af-hththt' }, default: { nodID: 'mlmlmlml-7c96-441d-a3af-frfrrfrrf' } }; export const testConfig = envConfigs[env] || envConfigs.default;
三、除对象结构外的其他访问方案
1. 导出函数返回配置
定义一个函数,内部处理环境判断并返回对应配置,其他文件调用函数获取:
// config.js export function getEnvConfig() { const env = process.env.ENV || "1"; if (env === '1') { return { nodID: 'aaaaaaa-f517-4859-91ff-bbbbbbbbb', xID: 'cccccc-f517-4859-91ff-nnnnnnnn' }; } else if (env === '2') { return { nodID: 'cacacaca-7c96-441d-a3af-hththt' }; } else { return { nodID: 'mlmlmlml-7c96-441d-a3af-frfrrfrrf' }; } }
使用方式:
import { getEnvConfig } from './config.js'; const config = getEnvConfig(); console.log(config.nodID);
2. 导出类实例化配置
如果后续需要扩展配置相关的方法,可使用类来封装:
// config.js export class EnvConfig { constructor() { const env = process.env.ENV || "1"; if (env === '1') { this.nodID = 'aaaaaaa-f517-4859-91ff-bbbbbbbbb'; this.xID = 'cccccc-f517-4859-91ff-nnnnnnnn'; } else if (env === '2') { this.nodID = 'cacacaca-7c96-441d-a3af-hththt'; } else { this.nodID = 'mlmlmlml-7c96-441d-a3af-frfrrfrrf'; } } }
使用方式:
import { EnvConfig } from './config.js'; const config = new EnvConfig(); console.log(config.nodID);
内容的提问来源于stack exchange,提问作者YusufOzt
相关产品推荐
相关产品推荐

