以相反的顺序迭代二维javascript数组



我有一个存储团队的数组:

结构如下:

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) { /* ... */ }

最新更新