- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在与对象对应的键上有一个 Crossfilterjs 维度。
我对对象的一个属性进行分组,并使用 reduceCount() 来查找该属性的值计数,但结果不是我所期望的。
我的代码:
<!DOCTYPE html>
<meta charset="utf-8">
<script src="//cdnjs.cloudflare.com/ajax/libs/crossfilter/1.3.9/crossfilter.min.js"></script>
<script>
var arr = [];
for (var i = 0; i < 100; i++) {
for (var j = 0; j < 100; j++) {
for (var k = 0; k < 100; k++) arr.push({a: i, e: { b: j, c: k}});
}
}
var cf = crossfilter(arr),
a = cf.dimension(function(d) { return d.a; }),
e = cf.dimension(function(d) { return d.e; });
var counts = e.group(function(d) { return d.b; })
.reduceCount()
.orderNatural()
.top(Infinity);
console.log(counts);
</script>
当我检查控制台时,我得到一个包含 67 个键/值对象的数组。
我期望得到一个包含 100 个键/值对象的数组,每个值对应 b 的一个值。
此外,有些计数并不符合我的预期。我期望所有的值都是相同的。然而,对于大多数键,我得到的值是 100,而对于少数键,我得到的值非常不同。 key 99 的值为 990100。
我在 Google Chrome 36.0.1985.143 m 中得到了这些结果。
我之前没有在 Crossfilterjs 中使用过自定义分组功能,看来我对这个功能不太了解。
我在 Crossfilterjs API 上查找了分组,但它并没有帮助我弄清楚事情。
提前致谢
最佳答案
我犯了错
当我阅读文档时,我没有注意到这一点:
groupValue must return a naturally-ordered value; furthermore, this order must be consistent with the dimension's value function
我的分组值是一个字符串,它具有自然排序,但我的维度是在不具有自然排序的对象上创建的。顺序之间的不一致一定是导致问题的原因。
然后我注意到文档中的另一部分解决了我的维度排序问题:
crossfilter.dimension() constructs a new dimension using the specified value accessor function. The function must return naturally-ordered values, i.e., values that behave correctly with respect to JavaScript's <, <=, >= and > operators. This typically means primitives: booleans, numbers or strings; however, you can override object.valueOf to provide a comparable value from a given object, such as a Date.
关于javascript - 在 Crossfilterjs 中使用组的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25567165/
我在与对象对应的键上有一个 Crossfilterjs 维度。 我对对象的一个属性进行分组,并使用 reduceCount() 来查找该属性的值计数,但结果不是我所期望的。 我的代码: v
我是一名优秀的程序员,十分优秀!