在javascript数组中自动生成名称
最近,我一直在为一段javascript代码苦苦挣扎。代码如下所示:在javascript数组中自动生成名称,javascript,jquery,Javascript,Jquery,最近,我一直在为一段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" ],
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计数=1;
变量bigData={
“团队”:[
而(计数var bigData={
“团队”:[],
结果:[[/*优胜者括号*/
[[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]]
]] };
对于(var i=1;ivar bigData={
“团队”:[],
结果:[[/*优胜者括号*/
[[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]]
]] };
对于(var i=1;i尝试以下方法:
var count = 1;
var data = [];
while (count <= 16) {
data.push(["Team " + (count++).toString(), "Team " + count.toString() ]);
count++;
}
var bigData = {
"teams" : data
}
var计数=1;
var数据=[];
同时(计数尝试以下方法:
var count = 1;
var data = [];
while (count <= 16) {
data.push(["Team " + (count++).toString(), "Team " + count.toString() ]);
count++;
}
var bigData = {
"teams" : data
}
var计数=1;
var数据=[];
而
代码不起作用,因为while循环在变量内部
是的,您不能将控制流语句放在对象文字的中间。相反,您需要从空数组开始,然后通过赋值(或)用值填充该数组:
var团队=[];
对于(var i=1;i
代码不起作用,因为while循环在变量内部
是的,您不能将控制流语句放在对象文字的中间。相反,您需要从空数组开始,然后通过赋值(或)用值填充该数组:
var团队=[];
对于(var i=1;i这里提供的其他答案使用一组数字(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"]
}"
这里提供的其他答案使用一组数字(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"]
}"
它只会增加8支队伍,而不是16支:)而且,使用toString()也不是必需的。它只会增加8支队伍,而不是16支:)而且,使用toString()也不是必需的。你们真的是最好的,我不能说你们为我做了多少!-太多了,祝你们所有人,有一个美好的一天:)好的,先生!-现在我有另一个问题要问你..我有没有办法把php代码传给团队成员?@Emil我肯定有办法-如果你发另一个问题,我肯定你会得到一些答案。好的,我会试试。谢谢你的快速回答。你们真的是最好的,我不能说你们为我做了多少!-太多了各位,祝你们今天愉快:)好的,先生!-现在我有另一个问题要问你..我可以把php代码传递给团队名称吗?@Emil我相信有办法-如果你发布另一个问题,我相信你会得到一些答案。好的,我会试试。谢谢你的快速回复。谢谢你的申请。我理解你的意思,但不是你键入的内容:p-我是否应该复制代码,它将显示(因为我不能)-我不知道如何处理它:)第一个块应该只是您列出的代码的替换,就像这里提供的其他答案一样。第二个块是将其放入javascript控制台的示例输出。嘿,好了。感谢您的应用。我理解您的意思,但不是您键入的内容:p-我是否应该复制代码,它将显示出来(因为我不能)-我不知道该怎么办:)第一个块应该是您列出的代码的替代品,就像这里提供的其他答案一样。第二个块是将其放入javascript控制台的示例输出。