【发布时间】:2014-02-24 15:56:35
【问题描述】:
我正在尝试解析 Javascript 对象的子对象以计算相同子对象的数量并返回具有这些计数的新 JSON 对象。这可能不是很清楚,所以这里是fiddle。
鉴于小提琴中的crsListData,我想返回这个:
objToReturn = [
{
key: "Consigned",
values:
[
{ mapKey: 2007 (4), mapVal: [["Ford F-150 (3)"], ["Honda Civic (1)"]] },
{ mapKey: 2011 (1), mapVal: "Toyota Camry (1)" },
{ mapKey: 2005 (1), mapVal: "Dodge RAM (1)" }
]
},
{
key: "Run",
values:
[
{ mapKey: 2007 (2), mapVal: "Ford F-150 (2)" },
{ mapKey: 2011 (1), mapVal: "Toyota Camry (1)" }
]
},
{
key: "Sold",
values:
[
{ mapKey: 2007 (1), mapVal: "Ford F-150 (1)" },
{ mapKey: 2011 (1), mapVal: "Toyota Camry (1)" }
]
}
];
如果您在小提琴中注意到,我已经评论了有关 mapKey 和 mapValue 的部分。它们将由从选择选项中获得的函数参数确定,以按型号(计数)/年份(计数)或年份(计数)/型号(计数)排序。
我的最终目标是生成一个基本上如下所示的 HTML 树:
-
已寄售(已寄售的数量)
- 2007 年(2007 年型号总数)
- 型号 1(计数)
- 型号 2(计数)
- 2011 年(2007 年型号总数)
- 2007 年(2007 年型号总数)
-
运行(运行次数)
- 2007 年(2007 年型号总数)
- 型号 1(计数)
- 型号 2(计数)
- 2011 年(2007 年型号总数)
- 2007 年(2007 年型号总数)
- 已售出(同上)
年份的顺序应基于该年份的模型总数(最高 # 在前)。同样,年份下的模型的顺序应该按最高计数排序。
或者,如果用户选择模型/年份进行分组,我想生成:
-
已寄售(已寄售的数量)
- Model1(该模型所有年份的总数)
- 第 1 年(今年的模型计数)
- 第 2 年(今年的模型计数)
- Model2(该模型所有年份的总数)
- Model1(该模型所有年份的总数)
-
运行(运行次数)
- Model1(该模型所有年份的总数)
- 第 1 年(今年的模型计数)
- 第 2 年(今年的模型计数)
- Model2(该模型所有年份的总数)
- Model1(该模型所有年份的总数)
- 已售出(同上)
这个排序也将基于计数。如果您需要任何澄清,请告诉我!谢谢!
【问题讨论】:
-
查询“that's not json” 5, 4, 3 的脚本 Kiddie avalanche
-
@WillWeld 这不是 json。 JSON 是一种表示法。你所拥有的是一个 JavaScript 对象。
-
@ExplosionPills 哎呀...更改了标题 - 更好?编辑:我对语义很糟糕。 objToReturn 是 Javascript 对象的 JSON 数组吗?还是它是一个带有子对象的 Javascript 对象?
-
@WillWeld - 这是一个对象数组。
标签: javascript jquery json multidimensional-array