二维数组-按行对数字进行排序

时间:2019-02-15 22:09:08

标签: javascript multidimensional-array

为什么每行中的数字分别不起作用?

它仅适用于最后一行,我不知道为什么。

function sortowanie(a, b) {
    return a-b;
}
var tab = new Array(20);
var tabS = new Array(5);
var sumaS = new Array(5);
for(var i = 0; i<5; i++) {
    tab[i] = new Array(5);
    tabS[i] = 0
}
for(var i = 0; i<5; i++) {
    for(var j = 0; j<5; j++) {
        tab[i, j] = Math.floor(Math.random()*90) + 10;
        document.write("["+tab[i, j]+"]"+" ");	
        sumaS[j] = tab[i, j];				
    }	
    tabS[i] = sumaS.sort(sortowanie);			 
    document.write("<br>");
}			
for(var i = 0; i<5; i++) {
    document.write(tabS[i] + "<br>");
}

我希望例如:

1 12 45 55 76<br>
0 43 76 88 92<br>

..等等

1 个答案:

答案 0 :(得分:0)

两个问题:

  • tab[i, j]应该真的是tab[i][j]
  • 您在summaS循环的每次迭代中都对i数组进行了变异,因此实际上您一次又一次地将 same 数组分配给结果。将其分配给tabS[i]之后的修改 tabS[i]中仍然可见,因此最后您会多次看到同一数组。

通过在外部循环内移动summaS数组的初始化来解决此问题:

function sortowanie(a, b) {
    return a-b;
}
var tab = new Array(20);
var tabS = new Array(5);
for(var i = 0; i<5; i++) {
    tab[i] = new Array(5);
    tabS[i] = 0
}
for(var i = 0; i<5; i++) {
    var sumaS = new Array(5);
    for(var j = 0; j<5; j++) {
        tab[i][j] = Math.floor(Math.random()*90) + 10;
        document.write("["+tab[i][j]+"]"+" ");	
        sumaS[j] = tab[i][j];				
    }	
    tabS[i] = sumaS.sort(sortowanie);			 
    document.write("<br>");
}			
for(var i = 0; i<5; i++) {
    document.write(tabS[i] + "<br>");
}