Javascript 对一个对象数组进行二分:不是所有对象都已枚举吗?

Javascript 对一个对象数组进行二分:不是所有对象都已枚举吗?,javascript,d3.js,bisection,Javascript,D3.js,Bisection,这是我的等分线: var bisectDate = d3.bisector(function(d: any) { console.log('d date ', d.date); return d.date; }).left; 我有一个日期数组(总共78个),但在我的平分线上,它只重复记录了5个,像下面这样 timesDataPath (78) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, ...] App.tsx:122 d d

这是我的等分线:

var bisectDate = d3.bisector(function(d: any) {
  console.log('d date ', d.date);
  return d.date;
}).left;
我有一个日期数组(总共78个),但在我的平分线上,它只重复记录了5个,像下面这样

timesDataPath  (78) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, ...]
App.tsx:122 d date  Mon Aug 12 2019 12:45:00 GMT+0800 (Singapore Standard Time)
App.tsx:122 d date  Mon Aug 12 2019 11:05:00 GMT+0800 (Singapore Standard Time)
App.tsx:122 d date  Mon Aug 12 2019 10:15:00 GMT+0800 (Singapore Standard Time)
App.tsx:122 d date  Mon Aug 12 2019 09:50:00 GMT+0800 (Singapore Standard Time)
App.tsx:122 d date  Mon Aug 12 2019 09:40:00 GMT+0800 (Singapore Standard Time)
App.tsx:122 d date  Mon Aug 12 2019 09:35:00 GMT+0800 (Singapore Standard Time)
这怎么会发生?数组中的我的对象如下所示:

{
  1. open: "25891.8496"
  2. high: "25896.8809"
  3. low: "25890.6797"
  4. close: "25893.1504"
  5. volume: "3205446"
  date: Mon Aug 12 2019 16:00:00 GMT+0800 (Singapore Standard Time) {}
}
我就是这样使用它的:

.on('mousemove', function() {
    var mouse = d3.mouse(this);
    var mouseDate = xScale.invert(mouse[0]);
    var i = bisectDate(timesDataPath, mouseDate); 

timesDataPath
是我用于x轴和y轴的,我对图形没有问题,只是使指针的这一部分不起作用。

这是预期的行为

如果查看for
d3.disector
,您会发现它并没有像您所想的那样迭代整个数组。请看这里:

while (lo < hi) {
    var mid = lo + hi >>> 1;
    if (compare(a[mid], x) > 0) hi = mid;
    else lo = mid + 1;
}

但它怎么会不按预期工作呢?我在看这个样本,我希望它能返回索引这真的是你对试图帮助你的人说的第一句话吗?同样,
console.log
正在按预期工作。我在这里没有什么可以解释的了。谢谢,我在看版本,链接是3.x,我在用5.x,我在看文档,想不出有什么不同,我希望我能在5.x版中看到这个示例。这可能有很多问题,但我希望你能将这个示例更改为5.7.x版。我已经被困了一天了,我不够好:(显然你在这里问了一个错误的问题:如果你再次阅读你的问题,你会发现你在问为什么控制台只工作了半打次,尽管你的数组有78个元素。我回答了这个问题,但很明显这不是你的问题。所以,请发布一个新问题,确切地解释你的问题是什么,什么不工作,所有相关细节。尽量简洁明了。