Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中拼接和取消移位后,无法将数组呈现到表中_Javascript_Arrays_Html Table_Splice - Fatal编程技术网

在Javascript中拼接和取消移位后,无法将数组呈现到表中

在Javascript中拼接和取消移位后,无法将数组呈现到表中,javascript,arrays,html-table,splice,Javascript,Arrays,Html Table,Splice,我不确定我是否犯了一些错误,或者这是一种默认行为。我正在使用splice/unshift在二维数组的顶部添加一个新元素,然后尝试将该数组渲染到表中 for (var i = 0; i < arr1[i].length; i++) { for (var j = 0; j < arr1.length; j++) { var r = arr1[j][i]; dt(r); } dttop(i); } f

我不确定我是否犯了一些错误,或者这是一种默认行为。我正在使用splice/unshift在二维数组的顶部添加一个新元素,然后尝试将该数组渲染到表中

  for (var i = 0; i < arr1[i].length; i++) {
      for (var j = 0; j < arr1.length; j++) {
          var r = arr1[j][i];
          dt(r);
      }
      dttop(i);
  }

  function dt(x) {
      if (isFinite(x) == true) {
          numeric++;
      } else {
          str++;
      }
  }

  function dttop(x) {
      if (numeric > str)
          arr1.splice(0, 0, "number");
      else
          arr1.splice(0, 0, "string");
  }
  alert(arr1); // alert--1  
   // render the result into html table
  s = '<table border=0>';
  for (var i = 0; i < arr1.length; i++) {
      s = s + '<tr>';
      for (var j = 0; j < arr1[i].length; j++) {
          s = s + '<td><font size="1" face="Verdana">' + arr1[i][j] + '</font></td>';
      }
      s = s + '</tr>';
  }
  s = s + '</table>';
  renderArea.innerHTML = s;
for(变量i=0;istr)
arr1.拼接(0,0,“编号”);
其他的
arr1.拼接(0,0,“串”);
}
警报(arr1);//警报--1
//将结果呈现到html表中
s='';
对于(变量i=0;i
所以,当我使用javascript splice()或unshift()时。我得到这样的输出 但是,如果我做了警报1,它会给我这样的结果 这证明它是在从splice函数中添加额外的位,而不是呈现为html


请帮助

我可以看到您正在使用
.splice()
将字符串
“number”
“string”
添加到
arr1
数组的开头。这样做意味着,当您循环添加值时,代码尝试访问字符串的索引(
arr1[i][j]
),导致
未定义

我正在使用splice/unshift在二维数组的顶部添加一个新元素,然后尝试将该数组渲染到表中

  for (var i = 0; i < arr1[i].length; i++) {
      for (var j = 0; j < arr1.length; j++) {
          var r = arr1[j][i];
          dt(r);
      }
      dttop(i);
  }

  function dt(x) {
      if (isFinite(x) == true) {
          numeric++;
      } else {
          str++;
      }
  }

  function dttop(x) {
      if (numeric > str)
          arr1.splice(0, 0, "number");
      else
          arr1.splice(0, 0, "string");
  }
  alert(arr1); // alert--1  
   // render the result into html table
  s = '<table border=0>';
  for (var i = 0; i < arr1.length; i++) {
      s = s + '<tr>';
      for (var j = 0; j < arr1[i].length; j++) {
          s = s + '<td><font size="1" face="Verdana">' + arr1[i][j] + '</font></td>';
      }
      s = s + '</tr>';
  }
  s = s + '</table>';
  renderArea.innerHTML = s;
方法的作用是:返回一个数组,其中包含从原始数组中删除的元素。如果要在给定二维数组的值前加前缀,请执行以下操作:

var num_arr = [[1,2,3]];
更简单的解决办法是:

json_arr = JSON.stringify(num_arr).replace("[[","[0,[");
function rowMaster(value,index)
  {
  return "<tr><td>value</td></tr>".replace("value",value);
  }

function parseFarce(value,index)
  {
  if(typeof value == "number") return "<th>value</th>".replace("value",value);

  else if(delete value.length === false && delete value[-1] === true && JSON.stringify(([]).constructor().valueOf()) === "[]") 
    {
    return value.map(rowMaster);
    }

  else
    {
    return value;
    }
  }

JSON.parse(json_arr).map(parseFarce);
而呈现到表中的是:

json_arr = JSON.stringify(num_arr).replace("[[","[0,[");
function rowMaster(value,index)
  {
  return "<tr><td>value</td></tr>".replace("value",value);
  }

function parseFarce(value,index)
  {
  if(typeof value == "number") return "<th>value</th>".replace("value",value);

  else if(delete value.length === false && delete value[-1] === true && JSON.stringify(([]).constructor().valueOf()) === "[]") 
    {
    return value.map(rowMaster);
    }

  else
    {
    return value;
    }
  }

JSON.parse(json_arr).map(parseFarce);
函数行主控(值、索引)
{
返回“值”。替换(“值”,值);
}
函数parseFarce(值、索引)
{
if(typeof value==“number”)返回“value”。替换(“value”,value);
else if(delete value.length==false&&delete value[-1]==true&&JSON.stringify(([]).constructor().valueOf())====“[]”)
{
返回值.map(rowMaster);
}
其他的
{
返回值;
}
}
parse(JSON_arr).map(parseFarce);
参考资料


我可以问一下您使用
isFinite()
函数来确定什么吗?要检查值是否为数字,我建议使用
typeof
而不是
isFinite()