【发布时间】:2018-06-07 06:56:05
【问题描述】:
【问题讨论】:
标签: arrays json multidimensional-array
【问题讨论】:
标签: arrays json multidimensional-array
最好的结构?这取决于。一种方法是创建一组对象(单元格)。每个单元格都包含“百分比”、“国家”、“性别”和“年份”等属性。这样您就可以轻松地对这些列进行排序。
另一种方法是创建仅具有 X 和 Y 属性的二维单元格数组,以显示它们在表格中的位置。您必须发送一些有关表本身的信息。
【讨论】:
这是 JSON 结构。请检查并确认。
{
"men": [
{
"USA": [
{
"during12months": {
"1997": "9.5%",
"2002": "16.6%",
"2012": "12.2%"
},
"earlier12months": {
"1997": "8.3%",
"2002": "7.8%",
"2012": "22.9%"
},
"never": {
"1997": "82.2%",
"2002": "75.6%",
"2012": "64.9%"
}
}
],
"Europe": [
{
"during12months": {
"1997": "9.2%",
"2002": "14.4%",
"2012": "13.7%"
},
"earlier12months": {
"1997": "11.3%",
"2002": "8.2%",
"2012": "18.5%"
},
"never": {
"1997": "79.5%",
"2002": "77.4%",
"2012": "67.8%"
}
}
]
}
],
"women": [
{
"USA": [
{
"during12months": {
"1997": "12.1%",
"2002": "15.5%",
"2012": "13.4%"
},
"earlier12months": {
"1997": "7.0%",
"2002": "8.4%",
"2012": "23.6%"
},
"never": {
"1997": "80.9%",
"2002": "76.1%",
"2012": "63.0%"
}
}
],
"Europe": [
{
"during12months": {
"1997": "12.6%",
"2002": "17.6%",
"2012": "14.9%"
},
"earlier12months": {
"1997": "8.8%",
"2002": "8.2%",
"2012": "16.9%"
},
"never": {
"1997": "78.6%",
"2002": "74.2%",
"2012": "68.2%"
}
}
]
}
],
"total": [
{
"USA": [
{
"during12months": {
"1997": "10.8%",
"2002": "16.0%",
"2012": "12.8%"
},
"earlier12months": {
"1997": "7.7%",
"2002": "8.1%",
"2012": "23.3%"
},
"never": {
"1997": "81.5%",
"2002": "75.9%",
"2012": "63.9%"
}
}
],
"Europe": [
{
"during12months": {
"1997": "11.0%",
"2002": "16.0%",
"2012": "14.3%"
},
"earlier12months": {
"1997": "10.0%",
"2002": "8.2%",
"2012": "17.7%"
},
"never": {
"1997": "79.0%",
"2002": "75.8%",
"2012": "68.0%"
}
}
]
}
]
}
使用列获取查询:
{
"men": [
{
"Europe": [
{
"earlier12months": {
"1997": "11.3%",
"2002": "8.2%",
"2012": "18.5%"
}
}
]
}
],
"women": [
{
"Europe": [
{
"earlier12months": {
"1997": "8.8%",
"2002": "8.2%",
"2012": "16.9%"
}
}
]
}
],
"total": [
{
"Europe": [
{
"earlier12months": {
"1997": "10.0%",
"2002": "8.2%",
"2012": "17.7%"
}
}
]
}
]
}
希望对你有帮助
谢谢 穆图
【讨论】:
对于更难的版本..大声笑!
来源:
{
"rows":
[
{ row:"Men",
data:{ rows:[
{ row:"1997",data:{
cols:[
{ col:"USA", data: {
cols:[
{ col:"during last 12", data:"9.5%"},
{ col:"earlier than 12", data:"9.5%"},
{ col:"never", data:"9.5%"} ] }}
,
{ col:"Europe", data: {}}] } },
{ row:"2002",data:{} },
{ row:"2002",data:{} }] }}
,
{ row:"Women" }
,
{ row:"Total" }
]
}
搞笑。
【讨论】:
从另一个答案中扩展一点“它取决于”(根据谷歌的说法,这似乎是唯一一次提出这样的问题)。
在我看来,表示多维数据的合理默认选项类似于:
[
{
"sex": "female",
"region": "europe",
"year": 2012,
"interval": "never",
"value": 12.5
}
]
这样,每个值对象都知道它在坐标空间中的位置,并且“所有”查询同样易于实现。与以特定查询成本较低的方式组织数据相比,性能可能会更差,但将优化留到需要时。
【讨论】: