最近我用一段javascript代码苦苦挣扎。代码如下所示:
var bigData = {
"teams" : [
["Team 1", "Team 2" ],
["Team 3", "Team 4" ],
["Team 5", "Team 6" ],
["Team 7", "Team 8" ],
["Team 9", "Team 10" ],
["Team 11", "Team 12" ],
["Team 13", "Team 14" ],
["Team 15", "Team 16" ],
],
results : [[ /* WINNER BRACKET */
[[1,0], [1,0], [0,3], [2,3], [1,5], [5,3], [7,2], [1,2]],
[[1,2], [3,4], [5,6], [7,8]],
[[9,1], [8,2]],
[[1,3]]
]
}
正如您可能已经猜到的那样,它是锦标赛的jquery插件。问题是我不想手动编写团队,我希望他们自动编写我已经完成了这个,并且代码不起作用,因为while循环在变量内部(到目前为止我知道):
var count = 1;
var bigData = {
"teams" : [
while (count <= 8) {
["Team ".count, "Team ".count ],
count++;
}
],
results : [[ /* WINNER BRACKET */
[[1,0], [1,0], [0,3], [2,3], [1,5], [5,3], [7,2], [1,2]],
[[1,2], [3,4], [5,6], [7,8]],
[[9,1], [8,2]],
[[1,3]]
]
}
它不起作用,我真的不知道该怎么做。
答案 0 :(得分:4)
var bigData = {
"teams" : [],
results : [[ /* WINNER BRACKET */
[[1,0], [1,0], [0,3], [2,3], [1,5], [5,3], [7,2], [1,2]],
[[1,2], [3,4], [5,6], [7,8]],
[[9,1], [8,2]],
[[1,3]]
]] };
for( var i=1 ; i<16 ; i+=2 )
bigData.teams.push(['Team '+i,'Team '+(i+1)]);
console.log(JSON.stringify(bigData));
在控制台中:
{“团队”:[[“团队1”,“团队2”],[“团队3”,“团队4”],[“团队5”,“团队6”],[“团队7” ,“Team 8”,[“Team 9”,“Team 10”],[“Team 11”,“Team 12”],[“Team 13”,“Team 14”],[“Team 15”,“团队16“]],”结果“:[[[[1,0],[1,0],[0,3],[2,3],[1,5],[5,3],[ 7,2],[1,2]],[[1,2],[3,4],[5,6],[7,8]],[[9,1],[8,2] ],[[1,3]]]]}
答案 1 :(得分:0)
试试这个:
var count = 1;
var data = [];
while (count <= 16) {
data.push(["Team " + (count++).toString(), "Team " + count.toString() ]);
count++;
}
var bigData = {
"teams" : data
}
通过推动团队进入它来构建阵列。请注意count作为字符串与队名的串联,加上第一次计数的++,将其迭代到下一个团队(从而产生团队1和团队2,而不是团队1和团队1)。
答案 2 :(得分:0)
并且代码不起作用,因为while循环在变量
中
是的,您不能将控制流语句放在对象文字中间。相反,您需要从一个空数组开始,然后通过赋值(或push
)填充值:
var teams = [];
for (var i=1; i<=16; )
teams.push(['Team '+i++,'Team '+i++]);
var bigData = {
teams: teams,
results: …
};
答案 3 :(得分:0)
此处提供的其他答案使用一组编号(8,16,无论如何)构建一个团队列表。
你可以得到一点点厚颜无耻,并在实际结果中生成团队中的团队列表,这将使你的脚本在未来的范围内与你的联盟规模不断扩大。代码花费大部分时间用于维护,如果你只需花费几分钟就可以让你的东西更加数据化,那么你将节省大量的时间。
由于你正在使用jquery,我将在这里使用该库中的函数:
var bigData = {
results : [
[ /* WINNER BRACKET */
[[1,0], [1,0], [0,3], [2,3], [1,5], [5,3], [7,2], [1,2]],
[[1,2], [3,4], [5,6], [7,8]],
[[9,1], [8,2]],
[[1,3]]
]
]
};
function flatten(n) {
return $.map(n, function(x){
return $.isArray(x) ? flatten(x) : x;
});
}
bigData.teams = $.map(
$.unique(flatten(bigData.results)).sort(),
function(num) { return "Team "+num; }
);
控制台输出:
> JSON.stringify(bigData)
"{
"results":[[[[1,0],[1,0],[0,3],[2,3],[1,5],[5,3],[7,2],[1,2]],[[1,2],[3,4],[5,6],[7,8]],[[9,1],[8,2]],[[1,3]]]],
"teams":["Team 0","Team 1","Team 2","Team 2","Team 2","Team 3","Team 4","Team 5","Team 6","Team 7","Team 8","Team 8","Team 9"]
}"