5

有没有办法在具有一个或多个值的属性上创建维度?例如

{quantity: 2, total: 190, tip: 100, items: ["apple","sandwich"],
{quantity: 2, total: 190, tip: 100, items: ["ice-cream"]},
{quantity: 1, total: 300, tip: 200, items: ["apple", "coffee"]}

我的目标是创建一个交叉过滤器,该过滤器可以过滤掉具有序数值的维度中的条目。有没有一种方法可以让我写一个过滤器/维度,让我说“我想要所有包含‘苹果’项目的条目”?

我能想到的唯一解决方法是为每个项目创建一个维度。像这样:

var paymentsByApple = payments.dimension(function(d) { return $.inArray("apple", d.items); });
var paymentsByCoffee = payments.dimension(function(d) { return $.inArray("coffee", d.items); });
// and one for every possible item

主要问题是我不想枚举和硬编码所有不同的对象。此外,我最终可能会有很多不同的项目。有没有更聪明的方法来做到这一点?

提前致谢!

4

2 回答 2

3

在这里面临同样的问题,并且没有看到使用当前 lib 功能的简单解决方法,请参阅this

更改数据模型以适应 Pablo Navaro 提出的单值维度的问题在于,您需要确保为其他维度计算的统计数据不会失真(重复计算、更正方法……)

希望看到一个过滤器在多值维度上工作,或者有更多时间深入研究代码库以提出一个......

于 2012-08-01T07:53:46.277 回答
2

改变你的数据模型怎么样?我认为使用:

[{id: 1, quantity: 1, total: 100, tip:  50, item: "apple"},
 {id: 1, quantity: 1, total:  90, tip:  50, item: "sandwich"},
 {id: 2, quantity: 1, total: 190, tip: 100, item: "ice-cream"},
 {id: 3, quantity: 1, total: 300, tip: 100, item: "apple"}, 
 {id: 3, quantity: 1, total: 300, tip: 100, item: "coffee"}]

也许您可以使用reduceSum按 id 计算总数

于 2012-07-25T14:25:15.187 回答