在vue.js中,有没有办法在数组中搜索数组?

k5ifujac  于 2022-12-23  发布在  Vue.js
关注(0)|答案(1)|浏览(231)

我尝试提取云数据来确定机场是LIFR、IFR、MVFR还是VFR。我能够轻松地提取可见性来满足该需求。但是,我在尝试找出如何读取天花板时遇到了问题。我使用的是metar-parser v1.0.1。例如,metar Parser将数据提取到每个云分类的对象数组中。
云:阵列(2项)0:对象{代码:"BKN",指:"破损",高度:1000,类型:null,类型含义:null} 1:对象{代码:"OVC",指:"阴天",海拔高度:1700,型号:null,类型含义:空}
我需要能够先拉出包含BKN的线,如果BKN缺失,则拉出包含OVC的线,并获得高度,以使其不受可见性要求的影响。
我目前知道我的代码不工作,但在这里.

getConditions(station) {
      if ((station.parsedMetar.visibility.miles > 5) && (station.parsedMetar.clouds.code == ('BKN' || 'OVR') && station.parsedMetar.clouds.altitude > 30)) {
          return `<i class="material-icons weather_icon">wb_sunny</i>VFR`;
      } else if ((station.parsedMetar.visibility.miles <= 5 && station.parsedMetar.visibility.miles >= 3) || (station.parsedMetar.clouds.code == ('BKN' || 'OVR') && station.parsedMetar.clouds.altitude <= 30 && station.parsedMetar.clouds.code == (BKN || OVR) && station.parsedMetar.clouds.altitude >= 10)) {
          return `<i class="material-icons weather_icon">wb_cloudy</i>MVFR`;
      } else if ((station.parsedMetar.visibility.miles < 3 && station.parsedMetar.visibility.miles >= 1) || (station.parsedMetar.clouds.code == ('BKN' || 'OVR') && station.parsedMetar.clouds.altitude < 10 && station.parsedMetar.clouds.code == (BKN || OVR) && station.parsedMetar.clouds.altitude >= 5)) {
          return `<i class="material-icons weather_icon">wb_cloudy</i>IFR`;
      } else if ((station.parsedMetar.visibility.miles < 1) || (station.parsedMetar.clouds.code = ('BKN' || 'OVR') && station.parsedMetar.clouds.altitude > 5)) {
          return `<i class="material-icons weather_icon">wb_cloudy</i>LIFR`;
      } else {
          return `<i class="material-icons weather_icon">wb_sunny</i>VFR`;

我的代码目前工作的可见性,以显示什么是预期的。云覆盖目前不工作。我知道目前的第一行代码将失败,因为我的云拉不工作,但最终返回推翻了这一失败。

c90pui9n

c90pui9n1#

是的,在Vue.js中,有几种方法可以在一个数组中搜索包含在另一个数组中的值。以下是几个选项:
使用Array.prototype.find()方法:此方法返回数组中满足提供的测试函数的第一个元素。您可以使用它来搜索一个数组中包含在另一个数组中的元素,如下所示:

let result = outerArray.find(innerArray => innerArray.includes(value));

使用for循环:你可以使用for循环来迭代外部数组,并检查每个内部数组中你要找的值,下面是一个例子:

let result;
for (let innerArray of outerArray) {
  if (innerArray.includes(value)) {
    result = innerArray;
    break;
  }
}

使用Array.prototype.flat()方法:如果你的内部数组不是很深,你可以使用flat()方法将外部数组扁平化为一个数组,然后使用includes()方法搜索值,下面是一个例子:

let result = outerArray.flat().includes(value);

值得注意的是,上面的例子假设您要搜索的值是一个基元类型(如数字或字符串),如果您要搜索的是一个对象,则需要使用不同的方法,如使用find()方法和自定义比较函数。

相关问题