dc.js按多列对数据进行排序

时间:2015-03-19 10:47:52

标签: dc.js

我使用dc.js创建数据表,我的要求是按多列的降序对数据表进行排序。我使用了以下代码:

.order(d3.descending)
     .sortBy(function (d) {
           return d.columnOne;
           return d.columnTwo;
});

请帮忙。

2 个答案:

答案 0 :(得分:2)

传递给sortBy的函数需要返回一个按键,按行或按字母顺序对行按所需顺序排序。

当您尝试执行此操作时,无法返回两个值。相反,

  1. 如果两列都是字符串,则将值作为字符串连接,由ASCII值低于columnOne中任何字符的字符分隔,或者
  2. 如果两列都是数字,请将columnOne乘以一个大于columnTwo中任何值的数字,然后再添加两个 值
  3. 接近一个字符串:

    .order(d3.descending)
         .sortBy(function (d) {
               return [d.columnOne,d.columnTwo].join('\x0');
    });
    

    方法二,数字

    .order(d3.descending)
         .sortBy(function (d) {
               return d.columnOne * 1e9 + d.columnTwo;
    });
    

    如果此代码中有任何错误,我会提前道歉,因为它未经测试。

    如果一列是数字而另一列是字符串,我不知道有什么方法可以做到这一点。

答案 1 :(得分:1)

戈登的方法为我工作,只需稍作调整

我的两列是一个字符串,一个数字,我用

.sortBy(function (d) {
    return [d.columnOne,d.columnTwo].join();
});

这就是诀窍。谢谢戈登! : - )

相关问题