Javascript 浏览器中是否有“console.table”的等效项?
这正是我需要它做的。但我希望在浏览器中输出该表。我该怎么做 我尝试了一些其他解决方案,但都不起作用,因为:Javascript 浏览器中是否有“console.table”的等效项?,javascript,Javascript,这正是我需要它做的。但我希望在浏览器中输出该表。我该怎么做 我尝试了一些其他解决方案,但都不起作用,因为: 他们期望有一个对象数组 列不是动态确定的(即,我的对象并不都有道具) 我的对象如下所示: { source0: {target0: 2, target1: 2, target2: 1}, source1: {target1: 3}, /*...*/ } 您应该为此使用模板系统 下面是handlebar.js的示例(您也可以运行下面的代码段) $(函数(){ 风险值数据={
{
source0: {target0: 2, target1: 2, target2: 1},
source1: {target1: 3},
/*...*/
}
您应该为此使用模板系统 下面是handlebar.js的示例(您也可以运行下面的代码段)
$(函数(){
风险值数据={
source0:{target0:2,target1:2,target2:1},
source1:{target1:3},
},
表=[],
colsDict={},
key=“”,
innerKey=“”,
tableData=[],
tmp=handlebar.compile($(“#模板”).text(),
html=“”;
用于(输入数据){
if(data.hasOwnProperty(key)){
table.push({title:key});
for(数据中的innerKey[键]){
if(数据[key].hasOwnProperty(innerKey)){
表[table.length-1][innerKey]=数据[key][innerKey];
colsDict[innerKey]=“”;}}
var cols=[“title”];
for(输入colsDict){
if(colsDict.hasOwnProperty(键)){
cols.push(键);}
用于(输入表格){
var obj={};
for(以cols为单位的innerKey){
if(表[key].hasOwnProperty(cols[innerKey])){
obj[cols[innerKey]]=表[key][cols[innerKey]];}
否则{
obj[cols[innerKey]]=“”;}
tableData.push(obj);}
html=tmp({cols:cols,rows:tableData});
$(#target”).html(html);
});代码>
{{{#每个cols}
{{this}}
{{/每个}}
{{#每行}
{{{#每个这个}
{{this}}
{{/每个}}
{{/每个}}
这里有一个解决方案,有两个迭代,第一个用于查找列,第二个用于构建表:
var s = {
source0: {target0: 2, target1: 2, target2: 1},
source1: {target1: 3},
}
var cols = [];
for (var k in s) {
for (var c in s[k]) {
if (cols.indexOf(c)===-1) cols.push(c);
}
}
var html = '<table><tr>'+
cols.map(function(c){ return '<th>'+c+'</th>' }).join('')+
'</tr>';
for (var l in s) {
html += '<tr>'+
cols.map(function(c){ return '<td>'+(s[l][c]||'')+'</td>' }).join('')+
'</tr>';
}
html += '</table>';
var s={
source0:{target0:2,target1:2,target2:1},
source1:{target1:3},
}
var cols=[];
for(s中的变量k){
对于(s[k]中的变量c){
if(cols.indexOf(c)==-1)cols.push(c);
}
}
var html=''+
map(函数(c){return'+c+''}).join('''+
'';
对于(s中的变量l){
html+=''+
map(函数(c){return'+(s[l][c]| |''''')+''}).join(''')+
'';
}
html+='';
当然,你必须根据自己的具体需要来定制 什么是console.table
?我不是一行程序,但是迭代列出列,然后用第二次迭代来构建表,这真的有问题吗?您是希望我们编写该代码还是看到阻塞问题?首先,感谢您教我一个新的调试工具:)其次,您应该为此使用模板系统。也许是Mustache.js?@jamice:即使我可以检查开发工具并获取表的html,我也很高兴@dystro在这个昂贵而沉重的解决方案中,你仍然需要硬编码列。我怀疑OP会觉得这有用。正如@dystroy所说,我不想硬编码列。因此,在检查所有数据中的所有属性之前,您不会知道所有列。属性
?这并不像您想象的那样容易,需要重写以满足需求。有趣的谜题我更喜欢@dystroy的解决方案,但谢谢。我也会投票支持你的解决方案:)这不包括“source0”和“source1”@AlexanderBrevig如果需要的话,那么这只是一个简单的更改,请参见编辑。