我有一个像这样的对象:
[ { "Project": 1; "key":["a", "b", "c", "d"]},
{ "Project": 2; "key":["b", "c", "d"]},
{ "Project": 3; "key":["e", "c", "a"]},
{ "Project": 4; "key":["b", "a", "e", "f"]}
]
就我实现而言,reduceCount只计算单个元素值的出现次数。我想把它改成什么
key value
a 3
b 3
c 3
d 2
e 2
f 1
我想把它计算在单个项目中出现的时间,如" a"已经出现在3个项目中。实际上这个数据我想在我的wordcloud中使用。
我可以在crossfilters之外进行此操作,但不确定如何通过crossfilters维度实现此目的。
任何帮助都很明显。
Ethan Jewett提到的解决方案
答案 0 :(得分:2)
如果要在当前版本的Crossfilter中执行此操作,则需要使用groupAll。这个问题的答案提供了一个例子:Is there a way to tell crossfilter to treat elements of array as separate records instead of treating whole array as single key?
或者,您可以使用Reductio库,它提供了一种非常容易地为复杂组生成reduce函数的方法,并且在这种情况下包装groupAll,使其与dc.js兼容。文档的相关部分位于:https://github.com/crossfilter/reductio#aggregations-groupall-aggregations-reductio-b-groupall-b-i-groupingfunction-i-
如果您特别喜欢冒险,可以尝试在https://github.com/crossfilter/crossfilter使用Crossfilter前叉的主分支。我们最近在dimension
调用中添加了一个新参数,该参数将使其严格按照您的描述处理您的数据。文档在这里:https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension