我有一个for循环创建变量。像得分0,得分1,得分2等等。第一部分就像一个魅力。并且得分score0,score1,score2等就像我期望的那样创建:
this["score"+i] = 8;
创建变量。在循环之外我可以记录得分[2]并且它可以工作。 然而。
我似乎无法弄清楚如何在for循环中引用创建的变量。我尝试了一些不同的选择
选项1:
arr = [1,2,3];
for (var i = 0; i < arr.length; i++) {
this["score"+i] = 8;
this["scorePercentage"+i] = this.score[i] * 10 / 100;
}
选项2:
arr = [1,2,3];
for (var i = 0; i < arr.length; i++) {
this["score"+i] = 8;
this["scorePercentage"+i] = score[i] * 10 / 100;
}
如何在循环内引用创建的变量?
提前致谢了。
答案 0 :(得分:2)
你每次都以同样的方式引用它。
var arr = [1,2,3];
for (var i = 0; i < arr.length; i++) {
this["score"+i] = 8;
this["scorePercentage"+i] = this["score"+i] * 10 / 100;
}
答案 1 :(得分:1)
为什么不使用具有所需属性的对象数组。
var array = [1, 2, 3],
objects = array.map(function (value) {
return {
score: 8,
percent: 8 * 10 % 100
};
});
console.log(objects);
或直接使用对象内部的对象。
var array = [1, 2, 3],
object = {};
array.forEach(function (value) {
object[value] = {
score: 8,
percent: 8 * 10 % 100
};
});
console.log(object);
答案 2 :(得分:1)
您的代码有几个问题
score0
,score1
,score2
,然后尝试引用从未创建的score
数组。 score1
与score[1]
arr
永远不会被宣布。如果您必须以严格模式运行代码,那将导致问题this
定义变量。由于你没有包含一个你正在使用JS框架的标签,我将假设你使用的是vanilla JS。使用this
引用Window
对象,因为如果您重构代码并将其放入函数中然后在严格模式下运行它将遇到错误。查看this fiddle 做你想做的事的最佳方式是这样的:
var arr = [1,2,3];
var score = [];
var scorePercentage = [];
for (var i = 0; i < arr.length; i++) {
score.push(8);
scorePercentage.push( score[i] * 10 / 100 );
}