我正在学习精彩的图书馆,dc.js和crossfilter.js,我正在使用geochoropleth地图做一个例子。
我想提供一些数据并让地图绘制特定国家/地区,但这些国家/地区没有显示。这是一个更大的例子的一部分,我试图只提交我遇到问题的部分。 我在https://jsfiddle.net/wheatgrass/93w6p6dc/6/
发布了一个jfiddle(但是让它运行起来有问题)你希望能看到数据和我的交叉滤波器输出。一切都进入console.log输出。
最初我将数据放在嵌套数组中,但请阅读有关cf需要" flattened"数据,所以我添加了扁平数据的两个子集示例,countries1和countries2。我想使用countries2。
我尝试使用reductio helper libs(yay!)让n1dimgroup按键输出" nid"和一系列有价值观的国家。我通过使用reductio github页面上的Readme.md中的示例来完成此操作。我在SO或其他地方找不到任何我正在尝试的例子。
我需要这方面的帮助。如何重写reducer以使n1dimgroup输出是一个具有键值的对象,如下所示?
{ key: Benin, value: 1}
{ key: Nepal, value: 2}
...
等?
非常感谢您的帮助和帮助。谢谢。 我缩短了下面的代码,但数据在jfiddle上。
下面的代码
<script>
//please see var countries2 on the jfiddle
var countries = [
"key":"Albania",
"value":2,
"key":"Jamaica",
"value":1,
"key":"Senegal",
"value":3,
"key":"Morocco",
"value":2,
"nid":"0",
},
{
"key":"Fiji",
"value":1,
"key":"Mongolia",
"value":1,
"key":"Uganda",
"value":1,
"nid":"36",
}
var n1 = crossfilter(countries2);
var n1dim = n1.dimension(function(d) { return d.nid});
var n1dimgroup = n1dim.group();
console.log("n1dim",n1dim.top(Infinity));
console.log("n1dimgroup",n1dimgroup.top(Infinity));
var reducer = reductio()
.exception(function(d) { return d.key; })
.exceptionCount(true)
.exceptionSum(function(d) { return d.value; });
reducer(n1dimgroup);
console.log('reducer', reducer);
console.log('n1dimgrouptop after reductio', n1dimgroup.top(Infinity));
console.log('n1dimgrouptop.key', n1dimgroup.top(Infinity).key);
console.log('n1dimgrouptop.value', n1dimgroup.top(Infinity).value);
</script>
如何让reducer以对象中的键值形式提供输出?
答案 0 :(得分:1)
Ethan的示例小提示向我展示了如何使用访问器功能 在组上使用reductio lib。这回答了我的问题。谢谢!