我有一个存储团队的数组:
结构是这样的:
leauges = new array(
array(juventus)
array(milan)
array(inter));
我想迭代数组以生成一个灯具列表并显示如下:
HOME AWAY
JUVENTUS VS MILAN
JUVENTUS VS INTER
MILAN VS INTER
MILAN VS JUVENTUS
INTER VS JUVENTUS
INTER VS MILAN
我的方法是
1)创建2 for循环从数组的不同端迭代。 2)在循环测试中,团队之间的匹配,以避免团队自己玩 3)如果不匹配,则将团队放在彼此相邻的表格中。
我的代码如下:
function makeFixture(){
var thirdtab = $('#demo2');
var tableStart1 = "<table><TR><th>HOME</th><th>VS</th><th>AWAY</th></TR>"
var tableEnd1 = "</table>"
var tableMid1 = '' ;
tableMid1 += "<tr>";
for(i = 0; i < league.length; i++ ){
for(q = league.length; q > 0; j-- ){
if(q != i){
tableMid1 += "<tr><td>" + league[i][0] + " </td><td>" + league[q][0]
+ " </td></tr>" ;
}
}
}
thirdtab.html(tableStart1 + tableMid1 + tableEnd1);
}
在我的控制台中,我得到“联盟{}。0 null或不是对象。 如果我拿出递减循环,我可以按预期获得主场比赛。我认为这就是问题所在。
非常感谢任何帮助。此外,我更喜欢最好的方法,所以如果我只是以错误的方式做到这一点,正确的方向上的一点将是伟大的
答案 0 :(得分:1)
让我们分解解决方案。迭代数组很容易吗?
var arr = ['a', 'b', 'c', 'd'];
for (var i = 0; i < arr.length; i += 1) {
console.log(arr[i]);
} // a b c d
现在让我们通过切换指标的方向来倒退
for (var i = arr.length-1; i >= 0; i -= 1) {
console.log(arr[i]);
} // d c b a
相同的逻辑适用于2d数组
var matrix = [
['a1', 'a2', 'a3'],
['b1', 'b2', 'b3'],
['c1', 'c2', 'c3']];
for (var i = matrix.length-1; i >= 0; i -= 1) { // rows
for (var j = matrix[i].length-1; j >= 0; j -= 1) { // cols
console.log(matrix[i][j]); // pretend it doesnt print \n
}
console.log('\n');
}
// c3 c2 c1
// b3 b2 b1
// a3 a2 a1
向后通过数组的唯一棘手的事情是迭代逻辑
而不是
for (var i = 0; i < upper_bound; i += 1) { /* ... */ }
我们有
for (var i = upper_bound - 1; i >= 0; i -= 1) { /* ... */ }