从 float32array 结果中获取过滤列表

问题描述 投票:0回答:1

使用这段代码:

function displayPixelValue(event) {
  const filteredLayers = map.getAllLayers().filter(function (layer) {
    return layer.get('name');
  });
  for (let i=0; i<filteredLayers.length; i++) {
    let reliefPattern = "_mbpd_";
    if (filteredLayers[i].get('name').match(reliefPattern)) {
      const reliefValue = filteredLayers[i].getData(event.pixel);
      console.log(reliefValue);
    }
  }
}
map.on(['pointermove'], displayPixelValue);

我得到了想要的结果,但每次移动鼠标时都会有 15 个

float32array
输出(即查询 15 个 GeoTIFF 文件)(参见输出图像):

这个想法是保存所有结果(即鼠标移动后的输出),合并/连接它们并过滤掉除负数之外的任何结果(例如。

NaN
255
),因此得到一个简单的列表以后可以用。不过,当只有一个
255
输出时,我可以用
reliefValue[0]
过滤
float32array

我一直在读到

float32array
只有
.get
.set
方法。因此,为了获得
arrays
,我使用了
Array.prototype.slice.call(myvariablehere)
,但问题又是它仅转换第一个。

非常感谢支持,

javascript arrays openlayers
1个回答
0
投票

你可以用这个逻辑过滤数组

!isNaN(n) && n < 0

过滤掉

NaN
值和小于
0
的值。

例如,

[NaN, 255, -5365.85].filter((n) => 
  !isNaN(n) && n < 0) // [-5365.85]
© www.soinside.com 2019 - 2024. All rights reserved.