所以我有一个条形图,例如这个数组:
[12, 32, 42, 32, 43, 0, 0, 0, 5, 0, 0, 0]
所以我从谷歌地图的标记中得到这个数组,长度为 6,所以从索引 0 到 5。
我在条形图上有一个突出显示事件,当它被触发时,它会给我点索引。我使用 pointindex 从谷歌地图数组中获取标记,例如:“gmap.markers[pointindex]”。这适用于条形图数组中的前 5 个值。但是条形图数组中的第九个值的点索引为 8,但我的谷歌地图数组只有 0 到 5 作为索引。所以它不再起作用了。 pointindex 8 基本上是来自 google maps 标记数组的索引 5。
例如这些值也会出现此问题。
条形图数组:[12, 32, 42, 32, 43, 0, 7, 0, 5, 0, 0, 0]
Google map 标记数组,长度为 7,因此索引从 0 到 6。
我有这段代码用于在图表中突出显示一个条形图,这个事件被触发,我用标记做了一些事情来突出显示一个标记(基本上改变了图标。
chart.bind('jqplotDataHighlight',
function (ev, seriesIndex, pointIndex, data) {
marker = gmap.markers[pointIndex];
if (marker !== null && marker !== undefined) {
marker.setIcon('https://maps.gstatic.com/mapfiles/ms2/micons/blue-dot.png');
}
}
);
正如我所解释的,当条形图数组的点索引中有空数据时,条形图的索引不再与谷歌标记的索引匹配。
我在脑海中想到将条形图数组复制到一个新数组并删除所有包含“0”的值。然后将条形图数组中的值与没有“0”值的新数组进行比较,以查看新数组中的索引是什么。这样它将再次与谷歌地图标记索引匹配。但是你会遇到问题,如果条形图数组有 2 个相同的值,则此方法不再有效。
有谁知道这个问题的解决方案,在我看来这个问题真的很简单,但我无法在代码中解决。
最佳答案
所以@Nina 的解决方案原则上有效,但在 UI 交互方面无效。
基本上,您需要查看被单击的栏是否有值,如果有,它映射到 Nina 过滤解决方案中的哪个索引。一旦从过滤数组中获得值所在的索引,就可以将其映射到标记数组。
为此:
我认为您最好的选择是,在构建条形图时使用类似于 { filteredIndex: N }
的对象来维护数组。该数组将与条形图长度相同,并告诉您它映射到过滤数组中的哪个索引。如果数据为 0,则 filteredIndex 将为空。
您可以简单地通过迭代数据并在值大于 0 时将值推送到过滤后的数组,并在单独的映射数组中维护索引来完成此操作。
关于javascript - 得到一个我需要与另一个数组匹配的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32821818/