我有一个存储团队的数组:
结构如下:
leauges = new array(
array(juventus)
array(milan)
array(inter));
我想遍历数组,生成一个fixture列表并显示如下:
主客场
尤文图斯VS米兰
尤文图斯VS国米
米兰VS国米
米兰VS尤文图斯
国际米兰VS尤文图斯
国际米兰VS米兰
我的方法是
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或不是对象"。如果我去掉循环的递减,我可以像预期的那样获得主场比赛。我认为这就是问题所在。
非常感谢您的帮助。此外,我更喜欢最好的方法,所以如果我只是以错误的方式这样做,那么在正确的方向上的一个点将是很好的
让我们分解解决方案。遍历数组很容易,对吧?
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
同样的逻辑适用于二维阵列
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) { /* ... */ }