You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中将多个.env环境变量提取为数组?

正确实现方法

你的代码问题在于访问process.env动态属性的语法错误,JS中访问对象的动态属性需要用方括号语法,而不是模板字符串拼接在点后面。下面提供两种可行方案:

方案一:已知账号数量时循环提取

适合明确知道API账号总数的场景(比如10个):

import dotenv from "dotenv"

dotenv.config()

const accountInfo = []

// 循环范围根据实际账号数量调整,比如10个就写i <= 10
for (let i = 1; i <= 10; i++) {
  const accountKey = `API_ACCOUNT_${i}`
  const secretKey = `API_SECRET_${i}`
  // 仅添加存在的有效账号信息
  if (process.env[accountKey] && process.env[secretKey]) {
    accountInfo.push({
      account: process.env[accountKey],
      secret: process.env[secretKey]
    })
  }
}

方案二:自动遍历所有账号(适合数量不确定的场景)

如果不确定具体账号数量,或者后续可能新增账号不想修改代码,可以通过遍历环境变量自动筛选:

import dotenv from "dotenv"

dotenv.config()

const accountInfo = []

// 遍历所有环境变量的键
Object.keys(process.env).forEach(key => {
  // 匹配以API_ACCOUNT_开头的键,提取序号
  const matchResult = key.match(/^API_ACCOUNT_(\d+)$/)
  if (matchResult) {
    const index = matchResult[1]
    const secretKey = `API_SECRET_${index}`
    // 对应密钥存在时才添加
    if (process.env[secretKey]) {
      accountInfo.push({
        account: process.env[key],
        secret: process.env[secretKey]
      })
    }
  }
})

// 可选:按账号序号排序,保证顺序与.env文件一致
accountInfo.sort((a, b) => {
  const getIndex = item => {
    const accountKey = Object.keys(process.env).find(k => process.env[k] === item.account)
    return parseInt(accountKey.split('_')[2])
  }
  return getIndex(a) - getIndex(b)
})

关键说明

  • 动态访问对象属性必须用obj[动态键名]的形式,obj.后面只能跟固定的属性名,不能直接用模板字符串。
  • 添加存在性判断可以避免将未定义的空值加入数组,保证数据有效性。

内容的提问来源于stack exchange,提问作者forbidden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:55:10