簡體   English   中英

如何在表頭和行中顯示嵌套的JSON值

[英]How to show nested JSON value in table header & row

我想根據截圖顯示表頭和行中的嵌套JSON值。

在此輸入圖像描述

但是,我目前的代碼顯示如下。

在此輸入圖像描述

如何獲得第一個屏幕截圖的結果?

這是我的代碼:

 var tbl_ss564_ib_jsonData = [ { "S_No": "1", "SS564 Metric": "Power Usage Effectiveness(PUE)", "Baseline": "2.2*", "DC": [ {"A": "2.4"}, {"B": "2.61"}, {"C": "2.46"}, {"D": "2.25"}, {"E": "2.11"}, {"F": "3.75"}, {"G": "2.08"}, {"H": "2.17"}, {"I": "1.85"}, {"J": "2.57"}, {"K": "2.42"} ] } ] var sortAscending = true; var tbl_ss564_ib = d3.select('#ss564_ib_page_wrap').append('table'); var title_ss564_ib = d3.keys(tbl_ss564_ib_jsonData[0]); var header_ss564_ib = tbl_ss564_ib.append('thead').append('tr') .selectAll('th') .data(title_ss564_ib).enter() .append('th') .text(function (d) { return d; }) .on('click', function (d) { header_ss564_ib.attr('class', 'header'); if (sortAscending) { rows.sort(function(a, b) { return b[d] < a[d]; }); sortAscending = false; this.className = 'aes'; } else { rows.sort(function(a, b) { return b[d] > a[d]; }); sortAscending = true; this.className = 'des'; } }); var rows = tbl_ss564_ib.append('tbody').selectAll('tr') .data(tbl_ss564_ib_jsonData).enter() .append('tr'); rows.selectAll('td') .data(function (d) { return title_ss564_ib.map(function (k) { return { 'value': d[k], 'name': k}; }); }).enter() .append('td') .attr('data-th', function (d) { return d.name; }) .text(function (d) { return d.value; }); 
 * { margin: 0; padding: 0; } #ss564_ib_page_wrap body { font: 14px/1.4 Georgia, Serif; } #ss564_ib_page_wrap { margin: 20px; } p { margin: 20px 0; } /* Generic Styling, for Desktops/Laptops */ #ss564_ib_page_wrap table { width: 100%; border-collapse: collapse; } /* Zebra striping */ #ss564_ib_page_wrap tr:nth-of-type(odd) { background: #eee; } #ss564_ib_page_wrap th { background: Teal; font-weight: bold; cursor: s-resize; background-repeat: no-repeat; background-position: 3% center; } #ss564_ib_page_wrap td, th { padding: 6px; border: 1px solid #ccc; text-align: left; } #ss564_ib_page_wrap th.des:after { content: "\\21E9"; } #ss564_ib_page_wrap th.aes:after { content: "\\21E7"; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script> <div id="ss564_ib_page_wrap"> </div> 

在不更改D3代碼的情況下,最簡單的解決方案就是預先操作數據陣列:

tbl_ss564_ib_jsonData[0].DC.forEach(function(d, i) {
    for (var key in d) {
        tbl_ss564_ib_jsonData[0][key] = d[key];
    }
});

delete tbl_ss564_ib_jsonData[0].DC;

以下是您更改的代碼:

 var tbl_ss564_ib_jsonData = [{ "S_No": "1", "SS564 Metric": "Power Usage Effectiveness(PUE)", "Baseline": "2.2*", "DC": [{ "A": "2.4" }, { "B": "2.61" }, { "C": "2.46" }, { "D": "2.25" }, { "E": "2.11" }, { "F": "3.75" }, { "G": "2.08" }, { "H": "2.17" }, { "I": "1.85" }, { "J": "2.57" }, { "K": "2.42" } ] }]; tbl_ss564_ib_jsonData[0].DC.forEach(function(d, i) { for (var key in d) { tbl_ss564_ib_jsonData[0][key] = d[key]; } }); delete tbl_ss564_ib_jsonData[0].DC; var sortAscending = true; var tbl_ss564_ib = d3.select('#ss564_ib_page_wrap').append('table'); var title_ss564_ib = d3.keys(tbl_ss564_ib_jsonData[0]); var header_ss564_ib = tbl_ss564_ib.append('thead').append('tr') .selectAll('th') .data(title_ss564_ib).enter() .append('th') .text(function(d) { return d; }) .on('click', function(d) { header_ss564_ib.attr('class', 'header'); if (sortAscending) { rows.sort(function(a, b) { return b[d] < a[d]; }); sortAscending = false; this.className = 'aes'; } else { rows.sort(function(a, b) { return b[d] > a[d]; }); sortAscending = true; this.className = 'des'; } }); var rows = tbl_ss564_ib.append('tbody').selectAll('tr') .data(tbl_ss564_ib_jsonData).enter() .append('tr'); rows.selectAll('td') .data(function(d) { return title_ss564_ib.map(function(k) { return { 'value': d[k], 'name': k }; }); }).enter() .append('td') .attr('data-th', function(d) { return d.name; }) .text(function(d) { return d.value; }); 
 * { margin: 0; padding: 0; } #ss564_ib_page_wrap body { font: 14px/1.4 Georgia, Serif; } #ss564_ib_page_wrap { margin: 20px; } p { margin: 20px 0; } /* Generic Styling, for Desktops/Laptops */ #ss564_ib_page_wrap table { width: 100%; border-collapse: collapse; } /* Zebra striping */ #ss564_ib_page_wrap tr:nth-of-type(odd) { background: #eee; } #ss564_ib_page_wrap th { background: Teal; font-weight: bold; cursor: s-resize; background-repeat: no-repeat; background-position: 3% center; } #ss564_ib_page_wrap td, th { padding: 6px; border: 1px solid #ccc; text-align: left; } #ss564_ib_page_wrap th.des:after { content: "\\21E9"; } #ss564_ib_page_wrap th.aes:after { content: "\\21E7"; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script> <div id="ss564_ib_page_wrap"> </div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM