javascript - 得到一个我需要与另一个数组匹配的索引

标签 javascript arrays

所以我有一个条形图,例如这个数组:

[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/

相关文章:

javascript - 将一个数组拆分为多个数组

javascript - CSS - 使用可调整的列设置行的样式

javascript - 如何从虚拟内存中为node.js提供html+js服务?

javascript - 如何将多个值传递给谷歌地图V3?

arrays - Swift - 通过修剪给定父项中的子项 "owned"来过滤数组

javascript:如何使用函数式编程比较两个对象数组?

javascript - 高效渲染大量 "select"元素

javascript - Ember 对可枚举数组进行排序或向常规数组添加新对象

javascript - ES5 风格的连接数组。将数组合并为一个

c++ - 编译时大小未知的数组类的实例化