以相反的顺序迭代2d javascript数组

时间:2015-07-04 04:02:24

标签: javascript jquery

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

结构是这样的:

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或不是对象。 如果我拿出递减循环,我可以按预期获得主场比赛。我认为这就是问题所在。

非常感谢任何帮助。此外,我更喜欢最好的方法,所以如果我只是以错误的方式做到这一点,正确的方向上的一点将是伟大的

1 个答案:

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