我有一个庞大的数组,其变量列表的范围是1到90,它确实很脏,并且使js文件几乎不可更改。
如何清洁/分解?我尝试了一些方法,但是没有用。重要的是要了解下面的内容,所有i18nrotatingKw11 / 2 ...都不是字符串,而是变量。
const rotatingKwsListArr = [i18nrotatingKw1,i18nrotatingKw2,i18nrotatingKw3,i18nrotatingKw4,i18nrotatingKw5,i18nrotatingKw6,i18nrotatingKw7,i18nrotatingKw8,i18nrotatingKw9,i18nrotatingKw10,i18nrotatingKw11,i18nrotatingKw12,i18nrotatingKw13,i18nrotatingKw14,i18nrotatingKw15,i18nrotatingKw16,i18nrotatingKw17,i18nrotatingKw18,i18nrotatingKw19,i18nrotatingKw20,i18nrotatingKw21,i18nrotatingKw22,i18nrotatingKw23,i18nrotatingKw24,i18nrotatingKw25,i18nrotatingKw26,i18nrotatingKw27,i18nrotatingKw28,i18nrotatingKw29,i18nrotatingKw30,i18nrotatingKw31,i18nrotatingKw32,i18nrotatingKw33,i18nrotatingKw34,i18nrotatingKw35,i18nrotatingKw36,i18nrotatingKw37,i18nrotatingKw38,i18nrotatingKw39,i18nrotatingKw40,i18nrotatingKw41,i18nrotatingKw42,i18nrotatingKw43,i18nrotatingKw44,i18nrotatingKw45,i18nrotatingKw46,i18nrotatingKw47,i18nrotatingKw48,i18nrotatingKw49,i18nrotatingKw50,i18nrotatingKw51,i18nrotatingKw52,i18nrotatingKw53,i18nrotatingKw54,i18nrotatingKw55,i18nrotatingKw56,i18nrotatingKw57,i18nrotatingKw58,i18nrotatingKw59,i18nrotatingKw60,i18nrotatingKw61,i18nrotatingKw62,i18nrotatingKw63,i18nrotatingKw64,i18nrotatingKw65,i18nrotatingKw66,i18nrotatingKw67,i18nrotatingKw68,i18nrotatingKw69,i18nrotatingKw70,i18nrotatingKw71,i18nrotatingKw72,i18nrotatingKw73,i18nrotatingKw74,i18nrotatingKw75,i18nrotatingKw76,i18nrotatingKw77,i18nrotatingKw78,i18nrotatingKw79,i18nrotatingKw80,i18nrotatingKw81,i18nrotatingKw82,i18nrotatingKw83,i18nrotatingKw84,i18nrotatingKw85,i18nrotatingKw86,i18nrotatingKw87,i18nrotatingKw88,i18nrotatingKw89,i18nrotatingKw90];
答案 0 :(得分:3)
在全局范围内用var
声明的所有变量都存在于window
对象中。您可以使用Bracket Notation.访问它们,下面是带有3个变量的示例
var i18nrotatingKw1 ="something 1";
var i18nrotatingKw2 = "something 2"
var i18nrotatingKw3 = "something 3"
let arr = Array(3).fill().map((x,i)=>window[`i18nrotatingKw${i+1}`])
console.log(arr);
答案 1 :(得分:2)
假设您不能简单地将i18nrotatingKw1 / ...的值存储在开头的数组中,或者将它们声明为对象的属性,请记住,将用var
声明的变量提升到变量对象执行上下文。例如,如果您有一个JavaScript文档:
var test1 = 'first'
var test2 = 'second'
然后
console.log(this['test1'])
结果记录为“ first” 您可以使用它来遍历变量名中的数字后缀。
答案 2 :(得分:0)
解决方法正在使用eval()
例如:
var evalString = 'const rotatingKwsListArr = ['
for (var i = 1; i <= 91; i++) {
evalString += 'i18nrotatingKw' + i + ','
}
evalString = evalString.slice(0, -1) + '];'
eval(evalString)
从MDN开始:eval()
函数评估以字符串形式表示的JavaScript代码。