Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可替代d3.升序或d3.降序,以达到所需的顺序_Javascript_D3.js - Fatal编程技术网

Javascript 可替代d3.升序或d3.降序,以达到所需的顺序

Javascript 可替代d3.升序或d3.降序,以达到所需的顺序,javascript,d3.js,Javascript,D3.js,我有一个图表,其中的列沿x轴按以下顺序显示: 2013年初、2013年底、2014年、2015年、2016年 问题是我使用的代码()将按升序对列进行排序,如下所示: 2014、2015、2016、2013年底、2013年初 使其这样做的代码如下: var d_sequence = sequenceSet.values().sort(d3.ascending); var d_categories = categorySet.values().sort(d3.ascending);

我有一个图表,其中的列沿x轴按以下顺序显示:

2013年初、2013年底、2014年、2015年、2016年

问题是我使用的代码()将按升序对列进行排序,如下所示:

2014、2015、2016、2013年底、2013年初

使其这样做的代码如下:

    var d_sequence = sequenceSet.values().sort(d3.ascending);
    var d_categories = categorySet.values().sort(d3.ascending);
    // output sequence and categories for debugging
    console.log(" data sequence: " + d_sequence);
    if (sequence) {
      console.log("input sequence: " + sequence);
    } else {
      sequence = d_sequence;
    }
我的问题是:如何修改这段代码,使其对列进行如下排序?

我想可以这样说,“根据以下数组中的顺序对列进行排序”,然后定义:
[2013年初、2013年底、2014年、2015年、2016年]

或者,也许有其他方法可以调整或利用d3.ascending的逻辑。但我不知道该怎么做。如果您有一个数组来定义排序顺序,是否有人可以用?

进行演示

var desiredOrder = ["start of 2013", "end of 2013", "2014", "2015", "2016"];
。。。只需在
sort
功能中使用
indexOf

var d_sequence = sequenceSet.values().sort(function(a,b){
    return desiredOrder.indexOf(a) - desiredOrder.indexOf(b) 
});
以下是更新的plunker: