如何使用javascript在嵌套构建表中使用数组

如何使用javascript在嵌套构建表中使用数组,javascript,json,Javascript,Json,关于将JSON转换为表,我有一些问题。我的目的是尝试构建表,但我的表如下所示 这是我的代码,我尝试使用Object.Keys、Object.Values、Object.entrie,但它不起作用。 多给我一些图片。 编辑: OP澄清后,以下是在HTML表中输出JSON数据的代码: 函数json2table(json,类) { var cols=Object.keys(json); var headerRow=“”; var bodyRows=''; 类别=类别| |“”; 函数首字母大

关于将JSON转换为表,我有一些问题。我的目的是
尝试构建表,但我的表如下所示
这是我的代码,我尝试使用Object.Keys、Object.Values、Object.entrie,但它不起作用。

多给我一些图片。 编辑:

OP澄清后,以下是在HTML表中输出JSON数据的代码:

函数json2table(json,类)
{  
var cols=Object.keys(json);
var headerRow=“”;
var bodyRows='';
类别=类别| |“”;
函数首字母大写(字符串){
返回string.charAt(0.toUpperCase()+string.slice(1);
}
cols.map(函数(col){
headerRow+=''+大写首字母(col)+'';
});
bodyRows+='';
map(函数(colName){
if(json[colName]='object'的类型)
{
var subCols=Object.keys(json[colName]);
console.log(subCols);
bodyRows+='';
subCols.map(函数(subcol){
控制台日志(subcol);
bodyRows+=''+大写首字母(subcol)+':'+JSON.stringify(JSON[colName][subcol])+'';
});
bodyRows+='';
}
否则{
bodyRows+=''+JSON.stringify(JSON[colName])+'';
}
})
bodyRows+='';
返回“”+headerRow+“”+bodyRows+“”;
}
/*如何使用它*/
//var toBeobj=($('#sendDataTableToScript').attr('value');
//var toBeobj=$('#sendDataTableToScript').attr('value');
//var defaultData=JSON.parse(toBeobj);
var defaultData={“scan01”:“POP”,“scan02”:“男性”,“scan03”:“13岁以下”,“scan04”:“POP”,“Q1”:“Q1_质量1”:“2”,“Q2_质量2”:“4”,“Q4_质量4”:“1”,“Q3_质量3”:“3”;“Q2_餐厅2”:“3”,“Q2_餐厅1”:“3”,“Q2_餐厅4”:“2”,“Q2_餐厅3”,“Q2_餐厅4”:“4”,“T67”::“1”、“Q2_餐厅8”:“3”},“Q3”:{“Q3_价值1”:“3”、“Q3_价值2”:“4”},“Q4”:“POP”};
var x=json2table(defaultData,'table');
document.getElementById('tableGoesher')。innerHTML=x

请以字符串形式提供此元素的值:#SendDataTableToScript编辑并添加更多说明。谢谢您最好在单独的
对象中传递标题(包含所有预期名称),然后在主体创建逻辑中,只需检查
对象的
类型的标题名称,如
var nestedCol=colName.split('/'):row[nestedCol[0].[row[nestedCol[1]]
.Q1\u质量1在Q1中,您可以在我的示例中看到我想要的更多在第二个picture@BBBBeloved好的,我编辑了我的答案,请检查代码段。我试图添加更多数据,但它看起来有问题。
function json2table(json, classes) {
  var cols = Object.keys(json[0]);


  var headerRow = '';
  var bodyRows = '';
  console.log(cols);
  classes = classes || '';

  function capitalizeFirstLetter(string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
  }

  cols.map(function(col) {
    headerRow += '<th>' + capitalizeFirstLetter(col) + '</th>';  

  });

  json.map(function(row) {
    bodyRows += '<tr>';

    cols.map(function(colName) {
    //  bodyRows += '<td>' + row[colName] + '</td>';   
      if(typeof row[colName] === 'object'){       
          /*if (row[colName] !== null){

            }   */            
          bodyRows += '<td>' + JSON.stringify(row[colName]) + '</td>';
        }
        else {
            bodyRows += '<td>' + row[colName] + '</td>';
        }
    })



    bodyRows += '</tr>';

  });

  return '<table class="' +
         classes +
         '"><thead><tr>' +
         headerRow +
         '</tr></thead><tbody>' +
         bodyRows +
         '</tbody></table>';
}

/* How to use it */


var defaultData = JSON.parse(...); // my JSON is here from my service

document.getElementById('tableGoesHere').innerHTML = json2table(defaultData, 'table');
 var defaultData =    {
      "scan01": "POP",
      "scan02": "male",
      "scan03": "under13",
      "scan04": "POP",
      "Q1": {
        "Q1_Quality1": "2",
        "Q2_Quality2": "4",
        "Q4_Quality4": "1",
        "Q3_Quality3": "3"
      },
      "Q2": {
        "Q2_Restaurant2": "3",
        "Q2_Restaurant1": "3",
        "Q2_Restaurant4": "2",
        "Q2_Restaurant3": "3",
        "Q2_Restaurant5": "4",
        "Q2_Restaurant6": "4",
        "Q2_Restaurant7": "1",
        "Q2_Restaurant8": "3"
      },
      "Q3": {
        "Q3_Value1": "3",
        "Q3_Value2": "4"
      },
      "Q4": "POP"
    }