Javascript D3平分线功能工作不正常

Javascript D3平分线功能工作不正常,javascript,d3.js,Javascript,D3.js,我有以下一组数据: const data = [ { value: 5.9, date: '2019-12-16T10:02:06.000Z', }, { value: 5.8, date: '2019-12-04T12:06:20.000Z', }, { value: 5.5, date: '2019-11-23T13:45:37.000Z', }, { value: 4.1, date: '2019-

我有以下一组数据:

const data = [
  {
    value: 5.9,
    date: '2019-12-16T10:02:06.000Z',
  },
  {
    value: 5.8,
    date: '2019-12-04T12:06:20.000Z',
  },
  {
    value: 5.5,
    date: '2019-11-23T13:45:37.000Z',
  },
  {
    value: 4.1,
    date: '2019-11-13T10:05:02.000Z',
  },
  {
    value: 4.1,
    date: '2019-11-01T12:50:19.000Z',
  },
  {
    value: 4.3,
    date: '2019-10-22T10:10:21.000Z',
  },
  {
    value: 4.3,
    date: '2019-10-08T21:36:06.000Z',
  },
  {
    value: 4.3,
    date: '2019-09-28T18:12:12.000Z',
  },
  {
    value: 4.2,
    date: '2019-09-18T15:01:38.000Z',
  },
  {
    value: 4.1,
    date: '2019-09-08T09:38:23.000Z',
  },
  {
    value: 4,
    date: '2019-08-29T02:38:01.000Z',
  },
  {
    value: 4,
    date: '2019-08-18T22:25:18.000Z',
  },
  {
    value: 4,
    date: '2019-08-12T12:30:50.000Z',
  },
  {
    value: 4,
    date: '2019-08-08T18:26:10.000Z',
  },
  {
    value: 4,
    date: '2019-07-28T17:53:02.000Z',
  },
  {
    value: 4,
    date: '2019-07-18T17:37:24.000Z',
  },
  {
    value: 4.1,
    date: '2019-07-08T11:44:27.000Z',
  },
  {
    value: 4,
    date: '2019-06-27T06:56:31.000Z',
  },
  {
    value: 4.1,
    date: '2019-06-16T00:25:23.000Z',
  },
  {
    value: 3.9,
    date: '2019-06-05T21:04:26.000Z',
  },
]
我正在使用以下平分线函数:

从“d3数组”导入{平分线}

常数平分日期=平分线(d=>新日期(d.Date))。左

我在一个工具提示函数中使用它,其中平分日期从图表
x0
中检索,因此在日期范围内

const index=bisectDate(数据,x0)

当我尝试使用该函数获取某个特定日期的索引时,8月29日之前的所有日期的索引都为0,8月29日之后(包括8月29日)的所有日期的索引都为20

有趣的是,当我使用以下数据时,函数工作得非常好。返回给定日期的正确索引:

const data2 = [
  {
    value: 4.1,
    date: new Date(2018, 9, 1),
  },
  {
    value: 4.3,
    date: new Date(2018, 10, 1),
  },
  {
    value: 4.3,
    date: new Date(2018, 11, 1),
  },
  {
    value: 4.3,
    date: new Date(2018, 12, 1),
  },
  {
    value: 4.2,
    date: new Date(2019, 1, 1),
  },
  {
    value: 4.1,
    date: new Date(2019, 2, 1),
  },
  {
    value: 4,
    date: new Date(2019, 3, 1),
  },
  {
    value: 4,
    date: new Date(2019, 4, 1),
  },
  {
    value: 4,
    date: new Date(2019, 5, 1),
  },
  {
    value: 4,
    date: new Date(2019, 6, 1),
  },
  {
    value: 4,
    date: new Date(2019, 7, 1),
  },
  {
    value: 4,
    date: new Date(2019, 8, 1),
  },
  {
    value: 4.1,
    date: new Date(2019, 9, 1),
  },
  {
    value: 4,
    date: new Date(2019, 10, 1),
  },
  {
    value: 4.1,
    date: new Date(2019, 11, 1),
  },
  {
    value: 3.9,
    date: new Date(2019, 12, 1),
  },
]  

我想唯一的区别可能是日期解析,所以我将原始数据日期更改为如下格式:
Date:new Date(2019,6,8)
看到我的数据日期至少在当天都很重要。随着格式的改变,我仍然遇到了同样的问题。

在写了所有这些之后,我意识到与工作的数据数组不同的是,数组是按日期升序排序的。我使用的实际数据数组是按日期降序排序的。这在d3中呈现良好,但平分线函数在日期递减中不起作用。现在回想起来,我在文档中找不到太多关于这方面的信息。我希望这能节省一些时间。

你可能想用一些参考资料和代码来丰富你的答案,使之成为一篇很有帮助的文章。例如,您已经非常清楚地介绍了“如果您希望以不同于自然顺序的顺序对值进行排序,例如降序而不是升序,请使用比较器而不是访问器。”@altocumulus我只是想提供帮助。不需要代码或引用。我阅读了与您相同的文档,但没有向我明确说明为了使平分线函数工作,数组需要按升序排序。例如,“如果您希望对值进行排序…”当时,我认为排序与我的问题无关。。。因此,文件中的这一措辞毫无帮助。只是花了4个小时玩弄日期格式,而这一直是个问题:(