我有以下代码:
headerCaptions.push(localization.SCREEN_EPISODE_INITIATION_HEADER_REQUEST1);
headerCaptions.push(localization.SCREEN_EPISODE_INITIATION_HEADER_REQUEST2);
headerCaptions.push(localization.SCREEN_EPISODE_INITIATION_HEADER_REQUEST3);
headerCaptions
是一个数组。 localization
对象包含字符串值。
我想动态地生成它,即映射x次,每次迭代时对象参数的数量增加1。例如,make 4会使最终方法调用SCREEN_EPISODE_INITIATION_HEADER_REQUEST4
,依此类推。
我很高兴使用vanilla js或新的ES6语法。
答案 0 :(得分:2)
您可以在对象中使用括号表示法来使用这样的变量:
headerCaptions.push(localization['SCREEN_EPISODE_INITIATION_HEADER_REQUEST'+i]);
然后你可以使用循环:
for(var i = 0; i < 3; i++) {
headerCaptions.push(localization['SCREEN_EPISODE_INITIATION_HEADER_REQUEST'+i]);
}
答案 1 :(得分:1)
使用ES6语法,你可以这样调用:
const n = 4;
for (let i = 0; i < n; i++) {
headerCaptions.push(localization[`SCREEN_EPISODE_INITIATION_HEADER_REQUEST${i}`])
}
由于可以通过调用object.property
或object['property']
来访问JavaScript对象属性,因此我们可以通过操作字符串以编程方式访问感兴趣的location
属性。
``语法使用字符串插值,允许您通过${}
答案 2 :(得分:1)
在JavaScript中,您可以使用点语法(在示例中使用)或子串语法访问对象属性,如下所示:
headerCaptions.push(localization["SCREEN_EPISODE_INITIATION_HEADER_REQUEST1"]);
由于方括号只包含一个字符串,因此可以动态生成它们。
headerCaptions.push(localization["SCREEN_EPISODE_INITIATION_HEADER_REQUEST" + i]);
现在你需要做的就是循环你的数字。
var i = 1;
var il = 4;
while (i < il) {
headerCaptions.push(localization["SCREEN_EPISODE_INITIATION_HEADER_REQUEST" + i]);
i += 1;
}
答案 3 :(得分:0)
for(var i=0; i<5; i++){
if(!localization.hasOwnProperty("SCREEN_EPISODE_INITIATION_HEADER_REQUEST"+i))
break;
headerCaptions.push(localization["SCREEN_EPISODE_INITIATION_HEADER_REQUEST"+i);
}
答案 4 :(得分:0)
语法a.b
相当于a['b']
,因此您可以执行
for(var i = 1; i <= n; i++) {
headerCaptions.push(localization['SCREEN_EPISODE_INITIATION_HEADER_REQUEST' + i]);
}
但是,将这些值存储在数组中可能会更好。