如何在JavaScript循环数组时为变量名追加记录编号?
循环生成动态命名变量的解决方案
作为JavaScript新手,你要的这种动态生成变量的需求其实有更合理的实现方式,直接生成独立变量反而容易污染全局命名空间、不好维护,先给你推荐两种更规范的做法:
推荐方案1:用数组存储(最简洁)
把所有活动类型存到一个数组里,通过索引访问对应的值,和你想要的activityType0、activityType1效果一致,代码更清爽:
const obj = relatedActivities.data; console.log(obj); const activityTypes = []; for (let i = 0; i < obj.length; i++) { activityTypes[i] = obj[i].Activity_Type; } // 访问第一条记录:activityTypes[0],第二条:activityTypes[1],以此类推 console.log(activityTypes[0]);
推荐方案2:用对象存储(键名符合你的要求)
如果一定要用activityType0这种命名作为标识,可以把数据存到对象里,通过对象属性访问:
const obj = relatedActivities.data; console.log(obj); const activityTypeMap = {}; for (let i = 0; i < obj.length; i++) { activityTypeMap[`activityType${i}`] = obj[i].Activity_Type; } // 访问方式两种: console.log(activityTypeMap.activityType0); // 点语法 console.log(activityTypeMap['activityType1']); // 方括号语法
不推荐但满足需求:生成全局独立变量
如果你确实需要生成一个个独立的全局变量(不建议这么做,容易和其他变量冲突),可以借助window对象(浏览器环境下):
const obj = relatedActivities.data; console.log(obj); for (let i = 0; i < obj.length; i++) { window[`activityType${i}`] = obj[i].Activity_Type; } // 之后直接用activityType0、activityType1这些变量就行 console.log(activityType0);
总结下,优先用数组或对象来管理这类批量数据,代码更易维护,也符合JavaScript的最佳实践。
内容的提问来源于stack exchange,提问作者Nathan Zoho
相关产品推荐
相关产品推荐

