【发布时间】:2018-03-23 19:39:55
【问题描述】:
我正在研究 ReactJS,想知道是否有办法将 javascript 数组从行转换为列。
[
{ study: 'KOOS', date: '05/06/2005', question: 'Standing upright', answer: 'Moderate' },
{ study: 'KOOS', date: '05/06/2006', question: 'Standing upright', answer: 'Severe' },
{ study: 'KOOS', date: '05/06/2007', question: 'Standing upright', answer: 'Extreme' },
{ study: 'KOOS', date: '05/06/2008', question: 'Standing upright', answer: 'Severe' },
{ study: 'KOOS', date: '05/06/2005', question: 'Going up or down stairs', answer: 'Extreme' },
{ study: 'KOOS', date: '05/06/2006', question: 'Going up or down stairs', answer: 'Moderate' },
{ study: 'KOOS', date: '05/06/2007', question: 'Going up or down stairs', answer: 'Extreme' },
{ study: 'KOOS', date: '05/06/2008', question: 'Going up or down stairs', answer: 'Moderate' }
]
我想把它转换成这样的 html table/div 数据:
Study: Koos
Question | 05/06/2005 | 05/06/2006 | 05/06/2007 | 05/06/2008
Standing upright | Moderate | Severe | Extreme | Severe
Going up or down stairs | Extreme | Moderate | Extreme | Moderate
我发现了这个优秀的库 - json-to-pivot-json。这是我想使用的东西,但唯一的问题是聚合值。
我在 sql 中看到了很多示例,但在 javascript 中找不到类似的示例。
为了帮助其他人,我正在添加完整的 JSX 代码以显示 Rafael 建议的结果。
var output = coll2tbl(surveyResult, "question", "date", "answer");
const mappedCells = output.cells.map((row, index) => {
row.unshift(output.row_headers[index]);
return row;
})
<table>
<thead>
<th>Question</th>
{
output.col_headers.map(c => {
return (
<th>{c}</th>
);
})
}
</thead>
<tbody>
{
mappedCells.map(row => (
<tr>{ row.map(cell => (<td>{cell}</td>))}</tr>
))
}
</tbody>
</table>
【问题讨论】:
-
如果您需要聚合现有的对象数组,然后从中构建一个新对象。
标签: javascript json reactjs