我不确定我是做错了还是默认行为。我正在使用splice / unshift在2d数组的顶部添加一个新元素,然后尝试将该数组渲染到表中。
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;
所以,当我使用javascript splice()或unshift()时。我得到一个这样的输出 但是,如果我提醒1,那么它会给我这样的结果 这证明它是从拼接函数中添加额外的位而不是渲染为html ..
请帮忙
答案 0 :(得分:1)
我可以看到您正在使用.splice()
将字符串"number"
或"string"
添加到arr1
数组的开头。这样做意味着当您循环访问以添加值时,代码会尝试访问字符串的索引(arr1[i][j]
),从而生成undefined
。
答案 1 :(得分:0)
我正在使用splice / unshift在2d数组的顶部添加一个新元素,然后尝试将该数组渲染到表中。
splice()方法返回一个数组,其中包含从原始数组中删除的元素。如果要在给定二维数组的前提下添加值:
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);
<强>参考强>