在Javascript中拼接和取消移位后,无法将数组呈现到表中
我不确定我是否犯了一些错误,或者这是一种默认行为。我正在使用splice/unshift在二维数组的顶部添加一个新元素,然后尝试将该数组渲染到表中在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
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()
。