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

如何基于字符串数组通过循环创建可导出的命名函数?

解决方案

你可以通过构建一个包含动态生成函数的对象,再利用ES模块的对象展开语法导出所有函数,完全不需要eval,还能满足直接导入调用的需求。

实现代码

// 假设你已定义好 extractData 函数和 jsonObject 数据
function extractData(data) {
  // 你的数据提取逻辑
  return data;
}

const jsonObject = [
  ["variable_name1", "value1", "value2", "value3"],
  ["variable_name2", "value1", "value2", "value3"]
];

const variableNames = [
  "myFunctionName1",
  "myFunctionName2"
];

// 方式1:用 forEach 构建函数对象
const exportFunctions = {};
variableNames.forEach((funcName, index) => {
  exportFunctions[funcName] = () => extractData(jsonObject[index]);
});

// 方式2:用 Object.fromEntries 简化写法(更优雅)
// const exportFunctions = Object.fromEntries(
//   variableNames.map((funcName, index) => [funcName, () => extractData(jsonObject[index])])
// );

// 导出所有动态生成的函数
export { ...exportFunctions };

使用方式

在其他脚本中可以直接导入并调用:

import { myFunctionName1, myFunctionName2 } from './你的模块文件名.js';

// 直接调用函数
console.log(myFunctionName1());
console.log(myFunctionName2());

这种方式既避免了eval的安全风险,又能让函数以命名导出的形式存在,完全符合你想要的优雅效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:37:53