首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在另一个数组vue上筛选或查找

在另一个数组vue上筛选或查找
EN

Stack Overflow用户
提问于 2021-09-08 14:11:44
回答 1查看 42关注 0票数 0

有两个数组,我从后端接收数据。在城市的第一个数组中,在第二个数组中,交付时间。

首先:

代码语言:javascript
运行
复制
region: {
 type: Array,
 default: () => []
},

第二:

代码语言:javascript
运行
复制
deliveryTime:  {
 type: Array,
 default: () => []
}

作为一个常规的数组,key-value。(例如-- Region: [{"name": "Boston"}, {"name":"Detroit"}, {""}];和DeliveryTime:[{"name": "Detroit","delivery_time: "2-7""},{"name": "Boston","delivery_time": "1-3"},{"}])如果名称相同,则需要输出交付时间。

我试过了:

代码语言:javascript
运行
复制
<div v-for='(reg, index) in deliveryTime' :key='index' > 
  <span :class='{ "reg": findTime(reg) }'> {{ reg }} </span>
</div>
///////////////
findTime(reg) {
  return this.region.includes(reg);
}

查找匹配的城市,但如何引用delivery_time

EN

回答 1

Stack Overflow用户

发布于 2021-09-08 21:22:19

两个数组元素都在name属性中包含区域名称,因此findTime()需要从this.region[]reg (即deliveryTime[]数组元素)中读取该属性。

使用Array.prototype.some()将每个地区的name与交付时间的地区进行比较:

代码语言:javascript
运行
复制
export default {
  methods: {
    findTime(reg) {
      return this.region.some(r => r.name === reg.name)
    }
  }
}

然后,要有条件地显示项目,请在模板中使用v-if

代码语言:javascript
运行
复制
<span v-if="findTime(reg)">{{ reg.name }}</span>

demo 1

另一种解决问题的方法是计算过滤后的结果:

代码语言:javascript
运行
复制
<template>
  <div v-for='(reg, index) in computedDeliveryTime'>
    <span> {{ reg.name }} </span>
  </div>
</template>

<script>
export default {
  computed: {
    computedDeliveryTime() {
      return this.deliveryTime.filter(d => {
        return this.region.some(r => r.name === d.name)
      })
    }
  }
}
</script>

demo 2

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69104707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档