让我有一个如下所示的数据对象:
[
{
"scenario_id": 238,
"scenario_desc": "k1204",
"scenario_status": null,
"scn_appl_lob_ownr_nm": "Crd",
"scenario_asv_id": 21216,
"appl_ci_id": "CI256747",
"mth_dt": "2015-01",
"cost_curr": 888.7326,
"qty_curr": "2",
"cost_trgt": 0,
"qty_trgt": "0",
"ftprnt": [
"Both"
]
},
{
"scenario_id": 238,
"scenario_desc": "k1204",
"scenario_status": null,
"scn_appl_lob_ownr_nm": "Crd",
"scenario_asv_id": 21216,
"appl_ci_id": "CI256747",
"mth_dt": "2015-01",
"cost_curr": 13479.6678574427,
"qty_curr": "17",
"cost_trgt": 0,
"qty_trgt": "0",
"ftprnt": [
"Both"
]
},
{
"scenario_id": 238,
"scenario_desc": "k1204",
"scenario_status": null,
"scn_appl_lob_ownr_nm": "Crd",
"scenario_asv_id": 21216,
"appl_ci_id": "CI256747",
"mth_dt": "2015-01",
"cost_curr": 11295.401684737,
"qty_curr": "17",
"cost_trgt": 0,
"qty_trgt": "0",
"ftprnt": [
"Both"
]
},
{
"scenario_id": 238,
"scenario_desc": "k1204",
"scenario_status": null,
"scn_appl_lob_ownr_nm": "Crd",
"scenario_asv_id": 21216,
"appl_ci_id": "CI256747",
"mth_dt": "2015-01",
"cost_curr": 2263.9328,
"qty_curr": "10",
"cost_trgt": 0,
"qty_trgt": "0",
"ftprnt": [
"Both"
]
},
{
"scenario_id": 238,
"scenario_desc": "k1204",
"scenario_status": null,
"scn_appl_lob_ownr_nm": "Crd",
"scenario_asv_id": 21215,
"appl_ci_id": "CI291768",
"mth_dt": "2015-01",
"cost_curr": 58406.3066,
"qty_curr": "17",
"cost_trgt": 0,
"qty_trgt": "0",
"ftprnt": [
"Cloud"
]
},
{
"scenario_id": 178,
"scenario_desc": "ktest",
"scenario_status": null,
"scn_appl_lob_ownr_nm": "Crd",
"scenario_asv_id": 11028,
"appl_ci_id": "ASV",
"mth_dt": "2015-01",
"cost_curr": 0,
"qty_curr": "0",
"cost_trgt": 0,
"qty_trgt": "0",
"ftprnt": [
"Cloud"
]
},
{
"scenario_id": 178,
"scenario_desc": "ktest",
"scenario_status": null,
"scn_appl_lob_ownr_nm": "Crd",
"scenario_asv_id": 11028,
"appl_ci_id": "ASV",
"mth_dt": "2015-01",
"cost_curr": 0,
"qty_curr": "0",
"cost_trgt": 0,
"qty_trgt": "0",
"ftprnt": [
"Cloud"
]
},
{
"scenario_id": 178,
"scenario_desc": "ktest",
"scenario_status": null,
"scn_appl_lob_ownr_nm": "Crd",
"scenario_asv_id": 11028,
"appl_ci_id": "ASV",
"mth_dt": "2015-01",
"cost_curr": 2259.994,
"qty_curr": "6",
"cost_trgt": 0,
"qty_trgt": "0",
"ftprnt": [
"Cloud"
]
},
{
"scenario_id": 178,
"scenario_desc": "ktest",
"scenario_status": null,
"scn_appl_lob_ownr_nm": "Crd",
"scenario_asv_id": 11028,
"appl_ci_id": "ASV",
"mth_dt": "2015-01",
"cost_curr": 0,
"qty_curr": "0",
"cost_trgt": 0,
"qty_trgt": "0",
"ftprnt": [
"Cloud"
]
}
]
现在,我可以使用d3 nest rollup返回由scenario_desc,ftprnt和mth_dt组成的成本(cost_curr + cost_trgt)的总和,如下所示:
var costByScn = d3.nest()
.key(function(d) { return d.scenario_desc })
.key(function(d) { return d.ftprnt })
.key(function(d) {
var mth_dt = new Date(d.mth_dt).getTime();
return mth_dt;
})
.rollup(function(v) {
return parseFloat(d3.sum(v, function(d) { return d.cost_curr + d.cost_trgt }))
})
.entries(response);
console.log("costByScn: ", JSON.stringify(costByScn));
但是如何通过scenario_desc,ftprnt和mth_dt获得appl_ci_id的独特计数?我也不限于使用d3,因为我可以使用像lodash这样的东西来做同样的事情......
最终结果如下:
[
{
"key": "k1204",
"values": [
{
"key": "Both",
"values": [
{
"key": "1420070400000",
"values": 1
}
]
},
{
"key": "Cloud",
"values": [
{
"key": "1420070400000",
"values": 1
}
]
}
]
},
{
"key": "ktest",
"values": [
{
"key": "Cloud",
"values": [
{
"key": "1420070400000",
"values": 1
}
]
}
]
}
]
这里是jsbin中的代码......
答案 0 :(得分:0)
使用lodash工作......
String input = "http://www.wolframalpha.com/input/?i=103%2F30+%3D+4a-3b,+71%2F60+%3D+a+%2B+b
,http://www.wolframalpha.com/input/?i=x%5E2%2B5x%2B6"
List<String> split = input.split('http');
List<String> finalList = new ArrayList<String>();
for(String fixup in split)
{
finalList.put( "http" + fixup );
}