gpt4 book ai didi

javascript - 使用不同的元素计数对值进行分组

转载 作者:行者123 更新时间:2023-11-28 05:14:05 25 4
gpt4 key购买 nike

让我有一个如下所示的数据对象:

[
{
"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 按 scene_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 中的代码...

https://jsbin.com/jicuxohawi/edit?js,console

最佳答案

使用 lodash 让它工作......

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) {

var z = _.map(v, 'appl_ci_id');
console.log("z is: ", z)

var q = _.uniq(z)

console.log("q is: ", q)
var len = q.filter(function(val, i, arr) {
return arr.indexOf(val) === i;
}).length;
return len;


})
.entries(response);

关于javascript - 使用不同的元素计数对值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41128624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com