二维数组未定义

时间:2017-02-22 15:58:46

标签: javascript undefined

我创建了一个函数生成表:

function TabGen(sRow){
 var sResultat = "<table border = 1 px solid black>";

for(var iCompt = 0; iCompt<arguments.length; iCompteur++)
{
    sResultat += ("<td>" + arguments[iCompteur]+ "</td>")
}
sResultat += "</table>";
return sResultat;
}

然后我创建了一个使用2维数组的函数,在屏幕上打印出一个包含3行4列的表格。这个:

function AfficheTab() {

var aTab = [[0,0,0,1],[0,0,0,2],[0,0,0,3]];

for(var iCompt=0; iCompt < aTab.length; iCompt++)
{
  return(aTab); 
}
}

为什么我得到一个未定义的?如果是错的,我应该如何解决这个问题?

打印功能:

(function (){

            var aLesDiv = document.querySelectorAll("#global div");

            aLesDiv[0].innerHTML = TabGen((AfficheTab(aTab)));


        }) ();

2 个答案:

答案 0 :(得分:0)

arguments本身就是一个数组。如果要使用数组,请使用参数[index] [arrayIterator] 在使用2D数组时,必须使用2个arrayIterators。

function TabGen(sRow){
   var sResultat = "<table border = 1 px solid black>";

    for(var iCompt = 0; iCompt<arguments[0].length; iCompteur++){
    sResultat += ("<td>" + arguments[0][iCompteur]+ "</td>")
  }
  sResultat += "</table>";
  return sResultat;
  }

答案 1 :(得分:0)

看到你的功能,它返回的是什么?一行还是矩阵?矩阵......

function AfficheTab() {

    var aTab = [[0,0,0,1],[0,0,0,2],[0,0,0,3]];

    for(var iCompt=0; iCompt < aTab.length; iCompt++)//useless loop
    {
      return(aTab); //the code stops in the first loop and return [[0,0,0,1],[0,0,0,2],[0,0,0,3]]
    }
}

所以你的TabGen可以通过以下方式处理所有事情:

function TabGen(aTab) {
   aTab.forEach((row) => {
       row.forEach((cell) => {
         //Do something with your row values (cell) 
       });
   });
   return false;//return your return stuff
}

我想你想要一张桌子......

function TabGen( aTab ) {
   var html = [];

   html.push( '<table border="1">' );   

   aTab.forEach(( row ) => {
       html.push( '<tr>' );

       row.forEach(( cell ) => {

        html.push( '<td>',cell,'</td>' ); 

       });

       html.push( '</tr>' );
   });

   html.push( '</table>' );

   return html.join( '' );
}