如何利用数组变量动态声明数组名称并添加数据
动态创建数组存储服务器应用信息解决方案
核心思路
不要使用eval动态声明全局变量,而是通过对象容器来管理各个服务器对应的数组,这种方式更安全、易维护,也符合JavaScript的最佳实践。
修正后的代码
var appArray = ['orange','apple','mango']; function appData() { // 初始化对象,用于存储每个服务器对应的应用数组 const serverApps = {}; for (let i = 0; i < appArray.length; i++) { var getApp = new GlideRecord('table'); // 修正拼写错误:addQuey → addQuery,同时使用正确的参数格式 getApp.addQuery('columnName', '=', appArray[i]); getApp.query(); while (getApp.next()) { var serverName = getApp.getValue('name'); // 获取服务器名称,如"server1" // 替换为实际存储应用信息的字段名 var applicationInfo = getApp.getValue('application_name'); // 如果当前服务器还没有对应的数组,先创建空数组 if (!serverApps[serverName]) { serverApps[serverName] = []; } // 将应用信息添加到对应服务器的数组中 serverApps[serverName].push(applicationInfo); } } // 示例输出:serverApps.server1 = ["app1", "app2"],serverApps.server3 = ["app3"] console.log(serverApps); return serverApps; }
关键说明
- 避免使用
eval:eval会执行任意字符串代码,存在安全隐患,且代码可读性差,调试难度高。用对象管理动态数组是更规范的方案。 - 修正查询语法:原代码中
addQuey是拼写错误,正确方法为addQuery,且参数格式应为addQuery(字段名, 操作符, 值)。 - 变量作用域优化:循环中使用
let i替代全局i,防止全局变量污染。 - 访问方式:可以通过
serverApps['server1']或serverApps.server1直接获取对应服务器的应用列表。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

