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如果需要的话,那么这只是一个简单的更改,请参见编辑。